function sendEmail($to, $from, $subject, $body, $cc = FALSE, $bcc = FALSE) { if (is_array($to)) { foreach ($to as $addr) { if (!validEmailAddress($addr)) { return FALSE; } } $to = join(', ', $to); } else { if (!validEmailAddress($to)) { return FALSE; } } if ($cc && is_array($cc)) { foreach ($cc as $addr) { if (!validEmailAddress($addr)) { return FALSE; } } $cc = join(', ', $cc); } else { if ($cc) { if (!validEmailAddress($cc)) { return FALSE; } } } if ($bcc && is_array($bcc)) { foreach ($bcc as $addr) { if (!validEmailAddress($addr)) { return FALSE; } } $bcc = join(', ', $bcc); } else { if ($bcc) { if (!validEmailAddress($bcc)) { return FALSE; } } } $headers = 'From: ' . $from . "\n" . 'Reply-To: ' . $from . "\n" . 'X-Mailer: Rubix Consulting, Inc. Postfix Web Autoreply'; if ($cc) { $headers .= "\n" . 'Cc: ' . $cc . "\n"; } if ($bcc) { $headers .= "\n" . 'Bcc: ' . $bcc . "\n"; } $additional = '-f' . $from; mail($to, $subject, $body, $headers, $additional); }
function getLocalForwards() { $sql = 'SELECT' . ' alias_id,' . ' (username || \'@\' || domain) AS email,' . ' domain,' . ' destination,' . ' active' . ' FROM virtual_aliases' . ' JOIN virtual_domains USING(domain_id)' . ' WHERE (username || \'@\' || domain) NOT IN (' . quotedAdminUserString() . ' )' . ' ORDER BY domain, username, destination'; $rows = db_getrows($sql); $ret = array(); foreach ($rows as $row) { if (!validEmailAddress($row['destination']) && validUserName($row['destination'])) { $row['aliases'] = getNumLocalAliasDestination($row['destination']); $ret[] = $row; } } return $ret; }
function invite($qref, $emails, $message) { global $USER; //check quiz owner $q = $this->getQuizForUser($qref, $USER->userid); if (!$q) { return false; } $mail = new Mailer(); //split up the email addresses $emailArray = preg_split("( |,)", $emails); $groupname = "Invited by email - " . $q->title . " - " . date('d-M-Y'); $groupid = $this->addGroup($groupname); foreach ($emailArray as $email) { if (trim($email) != "") { if (validEmailAddress($email)) { $userid = $this->addPendingUser($email); $this->addUserGroupQuiz($userid, $groupid, $q->quizid); $mail->invite($email, $USER->firstname, $q->title, $q->ref); } } } return true; }
function setUserLocal($value, $email = FALSE) { if (!$email) { $email = $_SESSION['user']['email']; } if (!validEmailAddress($email)) { return; } else { if (!userExists($email)) { return; } else { if (isSiteAdmin(getUserId($email))) { ## site admin should not manipulate own delivery return; } } } $parts = split('@', $email); if ($email != $_SESSION['user']['email']) { $adminDomains = getAdminDomains(); if (!in_array($parts[1], $adminDomains)) { return; } } if ($value !== 't' && $value !== 'f') { if (!$value) { $value = 'f'; } else { $value = 't'; } } $count = 0; if ($value == 'f') { ## user must have at least one active forward to disable local delivery $count = count(getActiveUserForwards($email)); } if ($value == 'f' && $count == 0) { ## TODO notify user $value = 't'; } $conditions = array('username' => $parts[0], 'domain_id' => getDomainId($parts[1]), 'destination' => $email); db_update('virtual_aliases', array('active' => $value), $conditions); }
echo translate("NEWSLETTER_TITLE"); ?> </title> <link rel="stylesheet" href="css/layout.css" type="text/css" media="screen" /> <!--[if lte IE 8]> <link rel="stylesheet" href="css/ie.css" type="text/css" media="screen" /> <script src="js/html5shiv.js"></script><![endif]--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script>!window.jQuery && document.write(unescape('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> </head> <body> <section id="main" class="column"> <article class="module width_full"> <?php if (isset($list_id) && !empty($list_id) && isValidNewsletter($cnx, $row_config_globale['table_listsconfig'], $list_id) && isset($email_addr)) { if (!validEmailAddress($email_addr)) { echo '<header><h3>' . translate("SUBSCRIPTION_TITLE") . '</h3></header>'; echo "<h4 class='alert_error'>" . translate("EMAIL_ADDRESS_NOT_VALID") . "</div>"; exit; } switch ($op) { case "join": echo '<header><h3>' . translate("SUBSCRIPTION_TITLE") . '</h3></header>'; $c = empty($c) && !empty($_POST['c']) ? $_POST['c'] : ""; if (empty($c) || $_POST['c'] != $_SESSION['c']) { $_SESSION['new_sub'] = $email_addr; echo '<form method="post" action=""> <div class="module_content"> <fieldset> <label>Confirmer votre inscription en saisissant le code ci-dessous :</label> <label><img src="c.php" /></label>
$liste = fopen($local_filename, 'r'); } } else { $liste = fopen($import_file['tmp_name'], 'r'); } if ($tmp_subdir_writable) { $tx_import = 0; while (!feof($liste)) { $mail_importe = fgets($liste, 4096); if (strlen($mail_importe) == 2) { // dummy and pretty function ;-) yeah ! } else { $mail_importe = str_replace("'", "", $mail_importe); $mail_importe = str_replace('"', "", $mail_importe); $mail_importe = strtolower(trim($mail_importe)); if (!empty($mail_importe) && validEmailAddress($mail_importe)) { $added = add_subscriber($cnx, $row_config_globale['table_email'], $list_id, $mail_importe); if ($added == -1) { $subscriber_op_msg .= "<h4 class='alert_error'>" . translate("ERROR_ALREADY_SUBSCRIBER", "<b>{$mail_importe}</b>") . ".</h4>"; } elseif ($added == 2) { $subscriber_op_msg .= "<h4 class='alert_success'>" . translate("SUBSCRIBER_ADDED", "<b>{$mail_importe}</b>") . ".</h4>"; $tx_import++; } elseif ($added == 0) { $subscriber_op_msg .= "<h4 class='alert_error'>" . translate("ERROR_SQL", DbError()) . "</h4>"; } } else { $subscriber_op_msg .= "<h4 class='alert_error'>Adresse mail invalide : " . $mail_importe . "</h4>"; } } } $subscriber_op_msg .= "<h4 class='alert_success'><b>{$tx_import} mails importés</b></h4>";
function modifyForward($aliasId, $destination, $active) { if ($active) { $active = 't'; } else { $active = 'f'; } if (!$aliasId || !$destination || !$active) { return FALSE; } $email = getAliasEmail($aliasId); if (!$email) { return FALSE; } if ($email != $_SESSION['user']['email']) { $adminDomains = getAdminDomains(); $emailParts = split('@', $email); $domain = $emailParts[1]; if (!in_array($domain, $adminDomains)) { return FALSE; } } if (!userExists($email)) { return FALSE; } else { if (!validEmailAddress($destination)) { return FALSE; } } $destinationParts = split('@', $destination); $allDomainsHash = getAllDomains(); $allDomains = array(); foreach ($allDomainsHash as $domain) { $allDomains[] = $domain['domain']; } if (in_array($destinationParts[1], $allDomains)) { if (!userExists($destination)) { return FALSE; } } $updates = array('destination' => $destination, 'active' => $active); $conditions = array('alias_id' => $aliasId); beginTransaction(); $ret = db_update('virtual_aliases', $updates, $conditions); if ($active == 'f') { setUserLocalIfNecessary($email); } endTransaction(); }
function validParams($arResult, $arParams) { if (empty($arParams['IBLOCK_TYPE']) || $arParams['IBLOCK_TYPE'] == '-') return 'VLDERR_IBLOCK_TYPE_EMPTY'; if (empty($arParams['IBLOCK_CODE']) || $arParams['IBLOCK_CODE'] == '-') return 'VLDERR_IBLOCK_CODE_EMPTY'; // form iblock must have even only one field for form $res = formHasFields($arResult, $arParams); if ($res !== true) { if ($res == 'IBLOCK_TYPE_NOT_FOUND') { return 'VLDERR_IBLOCK_TYPE_NOT_FOUND'; } elseif ($res == 'IBLOCK_CODE_NOT_FOUND') { return 'VLDERR_IBLOCK_CODE_NOT_FOUND'; } elseif ($res == 'HAS_NO_FIELDS') { return 'VLDERR_IBLOCK_HAS_NO_FIELDS'; } return 'UNKNOWN_ERROR'; } /* checking for email templates iblock has required fields (if need to send email) see: $arParams['EMAIL_TEMPLATES_REQUIRED_FIELDS'] */ $res = emailTemplatesHasRequiredFields($arResult, $arParams); if ($res !== true) { if (is_array($res) && $res[0] == 'IBLOCK_HAS_NO_RQ_FIELD') { return array('VLDERR_IBLOCK_HAS_NO_RQ_FIELD', $res[1]); } elseif ($res == 'IBLOCK_TYPE_NOT_FOUND') { return 'VLDERR_EMAIL_TEMPLATES_IBLOCK_TYPE_NOT_FOUND'; } elseif ($res == 'IBLOCK_CODE_NOT_FOUND') { return 'VLDERR_EMAIL_TEMPLATES_IBLOCK_CODE_NOT_FOUND'; } elseif ($res == 'ADMIN_TEMPLATE_NOT_FOUND') { return 'VLDERR_ADMIN_TEMPLATE_NOT_FOUND'; } elseif ($res == 'USER_TEMPLATE_NOT_FOUND') { return 'VLDERR_USER_TEMPLATE_NOT_FOUND'; } return 'UNKNOWN_ERROR'; } // email addresses validation and filtering by format if (needToSendEmail($arResult, $arParams, 'ANY')) { if (empty($arParams['~EMAIL_FROM'])) return 'VLDERR_EMAIL_FROM_EMPTY'; $res = validEmailAddress($arParams['~EMAIL_FROM'], false); if ($res === false) return 'VLDERR_EMAIL_FROM_INCORRECT'; else $arParams['~EMAIL_FROM'] = $res; } if (needToSendEmail($arResult, $arParams, 'ADMIN')) { if (empty($arParams['~ADMIN_EMAIL'])) return 'VLDERR_ADMIN_EMAIL_EMPTY'; $res = validEmailAddress($arParams['~ADMIN_EMAIL'], true); if ($res === false) return 'VLDERR_ADMIN_EMAIL_INCORRECT'; else $arParams['~ADMIN_EMAIL'] = $res; if (!empty($arParams['~HIDDEN_COPY_ADMIN'])) { $res = validEmailAddress($arParams['~HIDDEN_COPY_ADMIN'], true); if ($res === false) return 'VLDERR_HIDDEN_COPY_ADMIN_INCORRECT'; else $arParams['~HIDDEN_COPY_ADMIN'] = $res; } } if (needToSendEmail($arResult, $arParams, 'USER')) { if (!empty($arParams['~HIDDEN_COPY_USER'])) { $res = validEmailAddress($arParams['~HIDDEN_COPY_USER'], true); if ($res === false) return 'VLDERR_HIDDEN_COPY_USER_INCORRECT'; else $arParams['~HIDDEN_COPY_USER'] = $res; } } return true; }
// remove start line spaces } elseif ( $arField['FIELD_TYPE'] == 'TEXTAREA' ) { $arResult['POST_DATA'][$arField['CODE']] = preg_replace( '/^[\t ]+/m', '', $arResult['POST_DATA'][$arField['CODE']] ); $arResult['POST_DATA']['~'.$arField['CODE']] = preg_replace( '/^[\t ]+/m', '', $arResult['POST_DATA']['~'.$arField['CODE']] ); } // set filtered email to post data if ( $arField['CODE'] == 'email' && !empty($arResult['POST_DATA']['~'.$arField['CODE']]) && $validEmail = validEmailAddress( $arResult['POST_DATA']['~'.$arField['CODE']], $userManyEmails ) ) { $arResult['POST_DATA']['~'.$arField['CODE']] = $validEmail; $arResult['POST_DATA'][$arField['CODE']] = htmlspecialcharsEx($validEmail); } } if ($arResult['POST_ERROR'] === null) { if ($arParams['HIDE_SUCCESS_FORM'] && $arParams['HIDE_SUCCESS_FORM'] == 'Y') { $arResult['FORM_HIDE'] = true; } $arResult['POST_SUCCESS'] = array();
function addCatchAll($domainId, $destination, $active) { if ($active) { $active = 't'; } else { $active = 'f'; } $foundError = FALSE; $errors = array(); if (!$domainId) { $errors['domain'] = 'This field is required'; $foundError = TRUE; } if (!$destination) { $errors['destination'] = 'This field is required'; $foundError = TRUE; } if (!$active) { $errors['active'] = 'This field is required'; $foundError = TRUE; } if ($foundError) { print json_encode(array('success' => false, 'errors' => $errors)); return FALSE; } $domain = getDomain($domainId); if (!$domain) { $errors['domain'] = 'Invalid domain'; $foundError = TRUE; } if (!validEmailAddress($destination)) { $errors['destination'] = 'Invalid destination'; $foundError = TRUE; } if ($foundError) { print json_encode(array('success' => false, 'errors' => $errors)); return FALSE; } $destinationParts = split('@', $destination); $allDomainsHash = getAllDomains(); $allDomains = array(); foreach ($allDomainsHash as $tmpDomain) { $allDomains[] = $tmpDomain['domain']; } if (in_array($destinationParts[1], $allDomains)) { if (!userExists($destination)) { print json_encode(array('success' => false, 'errors' => array('destination' => 'User does not exist in local domain: ' . $destinationParts[1]))); return FALSE; } } $adminDomains = getAdminDomains(); if (!in_array($domain, $adminDomains)) { $errors['domain'] = 'Permission denied on domain: ' . $domain; $foundError = TRUE; } $email = '@' . $domain; if (aliasExists($email, $destination)) { $errors['destination'] = 'Catch all already exists'; $foundError = TRUE; } if ($foundError) { print json_encode(array('success' => false, 'errors' => $errors)); return FALSE; } $params = array('username' => '', 'domain_id' => $domainId, 'destination' => $destination, 'active' => $active); $ret = db_insert('virtual_aliases', $params, 'alias_id'); if ($ret) { print json_encode(array('success' => TRUE)); return; } print json_encode(array('success' => FALSE, 'msg' => 'Unknown error')); }