/** * Test addressing */ function test_Addressing() { $this->assertFalse($this->Mail->AddAddress('*****@*****.**'), 'Invalid address accepted'); $this->assertTrue($this->Mail->AddAddress('*****@*****.**'), 'Addressing failed'); $this->assertFalse($this->Mail->AddAddress('*****@*****.**'), 'Duplicate addressing failed'); $this->assertTrue($this->Mail->AddCC('*****@*****.**'), 'CC addressing failed'); $this->assertFalse($this->Mail->AddCC('*****@*****.**'), 'CC duplicate addressing failed'); $this->assertFalse($this->Mail->AddCC('*****@*****.**'), 'CC duplicate addressing failed (2)'); $this->assertTrue($this->Mail->AddBCC('*****@*****.**'), 'BCC addressing failed'); $this->assertFalse($this->Mail->AddBCC('*****@*****.**'), 'BCC duplicate addressing failed'); $this->assertFalse($this->Mail->AddBCC('*****@*****.**'), 'BCC duplicate addressing failed (2)'); $this->assertTrue($this->Mail->AddReplyTo('*****@*****.**'), 'Replyto Addressing failed'); $this->assertFalse($this->Mail->AddReplyTo('*****@*****.**'), 'Invalid Replyto address accepted'); $this->Mail->ClearAddresses(); $this->Mail->ClearCCs(); $this->Mail->ClearBCCs(); $this->Mail->ClearReplyTos(); }
/** * Send mail, similar to PHP's mail * * A true return value does not automatically mean that the user received the * email successfully. It just only means that the method used was able to * process the request without any errors. * * Using the two 'wp_mail_from' and 'wp_mail_from_name' hooks allow from * creating a from address like 'Name <*****@*****.**>' when both are set. If * just 'wp_mail_from' is set, then just the email address will be used with no * name. * * The default content type is 'text/plain' which does not allow using HTML. * However, you can set the content type of the email by using the * 'wp_mail_content_type' filter. * * The default charset is based on the charset used on the blog. The charset can * be set using the 'wp_mail_charset' filter. * * @since 1.2.1 * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters. * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address. * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name. * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type. * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset * @uses do_action_ref_array() Calls 'phpmailer_init' hook on the reference to * phpmailer object. * @uses PHPMailer * @ * * @param string $to Email address to send message * @param string $subject Email subject * @param string $message Message contents * @param string|array $headers Optional. Additional headers. * @return bool Whether the email contents were sent successfully. */ function wp_mail($to, $subject, $message, $headers = '') { // Compact the input, apply the filters, and extract them back out extract(apply_filters('wp_mail', compact('to', 'subject', 'message', 'headers'))); global $phpmailer; // (Re)create it, if it's gone missing if (!is_object($phpmailer) || !is_a($phpmailer, 'PHPMailer')) { require_once ABSPATH . WPINC . '/class-phpmailer.php'; require_once ABSPATH . WPINC . '/class-smtp.php'; $phpmailer = new PHPMailer(); } // Headers if (empty($headers)) { $headers = array(); } elseif (!is_array($headers)) { // Explode the headers out, so this function can take both // string headers and an array of headers. $tempheaders = (array) explode("\n", $headers); $headers = array(); // If it's actually got contents if (!empty($tempheaders)) { // Iterate through the raw headers foreach ($tempheaders as $header) { if (strpos($header, ':') === false) { continue; } // Explode them out list($name, $content) = explode(':', trim($header), 2); // Cleanup crew $name = trim($name); $content = trim($content); // Mainly for legacy -- process a From: header if it's there if ('from' == strtolower($name)) { if (strpos($content, '<') !== false) { // So... making my life hard again? $from_name = substr($content, 0, strpos($content, '<') - 1); $from_name = str_replace('"', '', $from_name); $from_name = trim($from_name); $from_email = substr($content, strpos($content, '<') + 1); $from_email = str_replace('>', '', $from_email); $from_email = trim($from_email); } else { $from_name = trim($content); } } elseif ('content-type' == strtolower($name)) { if (strpos($content, ';') !== false) { list($type, $charset) = explode(';', $content); $content_type = trim($type); $charset = trim(str_replace(array('charset=', '"'), '', $charset)); } else { $content_type = trim($content); } } elseif ('cc' == strtolower($name)) { $cc = explode(",", $content); } elseif ('bcc' == strtolower($name)) { $bcc = explode(",", $content); } else { // Add it to our grand headers array $headers[trim($name)] = trim($content); } } } } // Empty out the values that may be set $phpmailer->ClearAddresses(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearAttachments(); $phpmailer->ClearBCCs(); $phpmailer->ClearCCs(); $phpmailer->ClearCustomHeaders(); $phpmailer->ClearReplyTos(); // From email and name // If we don't have a name from the input headers if (!isset($from_name)) { $from_name = 'WordPress'; } // If we don't have an email from the input headers if (!isset($from_email)) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']); if (substr($sitename, 0, 4) == 'www.') { $sitename = substr($sitename, 4); } $from_email = 'wordpress@' . $sitename; } // Set the from name and email $phpmailer->From = apply_filters('wp_mail_from', $from_email); $phpmailer->FromName = apply_filters('wp_mail_from_name', $from_name); // Set destination address $phpmailer->AddAddress($to); // Set mail's subject and body $phpmailer->Subject = $subject; $phpmailer->Body = $message; // Add any CC and BCC recipients if (!empty($cc)) { foreach ($cc as $recipient) { $phpmailer->AddCc(trim($recipient)); } } if (!empty($bcc)) { foreach ($bcc as $recipient) { $phpmailer->AddBcc(trim($recipient)); } } // Set to use PHP's mail() $phpmailer->IsMail(); // Set Content-Type and charset // If we don't have a content-type from the input headers if (!isset($content_type)) { $content_type = 'text/plain'; } $content_type = apply_filters('wp_mail_content_type', $content_type); // Set whether it's plaintext or not, depending on $content_type if ($content_type == 'text/html') { $phpmailer->IsHTML(true); } else { $phpmailer->IsHTML(false); } // If we don't have a charset from the input headers if (!isset($charset)) { $charset = get_bloginfo('charset'); } // Set the content-type and charset $phpmailer->CharSet = apply_filters('wp_mail_charset', $charset); // Set custom headers if (!empty($headers)) { foreach ($headers as $name => $content) { $phpmailer->AddCustomHeader(sprintf('%1$s: %2$s', $name, $content)); } } do_action_ref_array('phpmailer_init', array(&$phpmailer)); // Send! $result = @$phpmailer->Send(); return $result; }
/** * Send mail, similar to PHP's mail * * A true return value does not automatically mean that the user received the * email successfully. It just only means that the method used was able to * process the request without any errors. * * Using the two 'wp_mail_from' and 'wp_mail_from_name' hooks allow from * creating a from address like 'Name <*****@*****.**>' when both are set. If * just 'wp_mail_from' is set, then just the email address will be used with no * name. * * The default content type is 'text/plain' which does not allow using HTML. * However, you can set the content type of the email by using the * 'wp_mail_content_type' filter. * * The default charset is based on the charset used on the blog. The charset can * be set using the 'wp_mail_charset' filter. * * @since 1.2.1 * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters. * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address. * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name. * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type. * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset * @uses do_action_ref_array() Calls 'phpmailer_init' hook on the reference to * phpmailer object. * @uses PHPMailer * * @param string|array $to Array or comma-separated list of email addresses to send message. * @param string $subject Email subject * @param string $message Message contents * @param string|array $headers Optional. Additional headers. * @param string|array $attachments Optional. Files to attach. * @return bool Whether the email contents were sent successfully. */ function wp_mail($to, $subject, $message, $headers = '', $attachments = array()) { // Compact the input, apply the filters, and extract them back out extract(apply_filters('wp_mail', compact('to', 'subject', 'message', 'headers', 'attachments'))); if (!is_array($attachments)) { $attachments = explode("\n", str_replace("\r\n", "\n", $attachments)); } global $phpmailer; // (Re)create it, if it's gone missing if (!is_object($phpmailer) || !is_a($phpmailer, 'PHPMailer')) { require_once ABSPATH . WPINC . '/class-phpmailer.php'; require_once ABSPATH . WPINC . '/class-smtp.php'; $phpmailer = new PHPMailer(true); } // Headers if (empty($headers)) { $headers = array(); } else { if (!is_array($headers)) { // Explode the headers out, so this function can take both // string headers and an array of headers. $tempheaders = explode("\n", str_replace("\r\n", "\n", $headers)); } else { $tempheaders = $headers; } $headers = array(); $cc = array(); $bcc = array(); // If it's actually got contents if (!empty($tempheaders)) { // Iterate through the raw headers foreach ((array) $tempheaders as $header) { if (strpos($header, ':') === false) { if (false !== stripos($header, 'boundary=')) { $parts = preg_split('/boundary=/i', trim($header)); $boundary = trim(str_replace(array("'", '"'), '', $parts[1])); } continue; } // Explode them out list($name, $content) = explode(':', trim($header), 2); // Cleanup crew $name = trim($name); $content = trim($content); switch (strtolower($name)) { // Mainly for legacy -- process a From: header if it's there case 'from': if (strpos($content, '<') !== false) { // So... making my life hard again? $from_name = substr($content, 0, strpos($content, '<') - 1); $from_name = str_replace('"', '', $from_name); $from_name = trim($from_name); $from_email = substr($content, strpos($content, '<') + 1); $from_email = str_replace('>', '', $from_email); $from_email = trim($from_email); } else { $from_email = trim($content); } break; case 'content-type': if (strpos($content, ';') !== false) { list($type, $charset) = explode(';', $content); $content_type = trim($type); if (false !== stripos($charset, 'charset=')) { $charset = trim(str_replace(array('charset=', '"'), '', $charset)); } elseif (false !== stripos($charset, 'boundary=')) { $boundary = trim(str_replace(array('BOUNDARY=', 'boundary=', '"'), '', $charset)); $charset = ''; } } else { $content_type = trim($content); } break; case 'cc': $cc = array_merge((array) $cc, explode(',', $content)); break; case 'bcc': $bcc = array_merge((array) $bcc, explode(',', $content)); break; default: // Add it to our grand headers array $headers[trim($name)] = trim($content); break; } } } } // Empty out the values that may be set $phpmailer->ClearAddresses(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearAttachments(); $phpmailer->ClearBCCs(); $phpmailer->ClearCCs(); $phpmailer->ClearCustomHeaders(); $phpmailer->ClearReplyTos(); // From email and name // If we don't have a name from the input headers if (!isset($from_name)) { $from_name = 'WordPress'; } /* If we don't have an email from the input headers default to wordpress@$sitename * Some hosts will block outgoing mail from this address if it doesn't exist but * there's no easy alternative. Defaulting to admin_email might appear to be another * option but some hosts may refuse to relay mail from an unknown domain. See * http://trac.wordpress.org/ticket/5007. */ if (!isset($from_email)) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']); if (substr($sitename, 0, 4) == 'www.') { $sitename = substr($sitename, 4); } $from_email = 'wordpress@' . $sitename; } // Plugin authors can override the potentially troublesome default $phpmailer->From = apply_filters('wp_mail_from', $from_email); $phpmailer->FromName = apply_filters('wp_mail_from_name', $from_name); // Set destination addresses if (!is_array($to)) { $to = explode(',', $to); } foreach ((array) $to as $recipient) { try { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" $recipient_name = ''; if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (count($matches) == 3) { $recipient_name = $matches[1]; $recipient = $matches[2]; } } $phpmailer->AddAddress($recipient, $recipient_name); } catch (phpmailerException $e) { continue; } } // Set mail's subject and body $phpmailer->Subject = $subject; $phpmailer->Body = $message; // Add any CC and BCC recipients if (!empty($cc)) { foreach ((array) $cc as $recipient) { try { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" $recipient_name = ''; if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (count($matches) == 3) { $recipient_name = $matches[1]; $recipient = $matches[2]; } } $phpmailer->AddCc($recipient, $recipient_name); } catch (phpmailerException $e) { continue; } } } if (!empty($bcc)) { foreach ((array) $bcc as $recipient) { try { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" $recipient_name = ''; if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (count($matches) == 3) { $recipient_name = $matches[1]; $recipient = $matches[2]; } } $phpmailer->AddBcc($recipient, $recipient_name); } catch (phpmailerException $e) { continue; } } } // Set to use PHP's mail() $phpmailer->IsMail(); // Set Content-Type and charset // If we don't have a content-type from the input headers if (!isset($content_type)) { $content_type = 'text/plain'; } $content_type = apply_filters('wp_mail_content_type', $content_type); $phpmailer->ContentType = $content_type; // Set whether it's plaintext, depending on $content_type if ('text/html' == $content_type) { $phpmailer->IsHTML(true); } // If we don't have a charset from the input headers if (!isset($charset)) { $charset = get_bloginfo('charset'); } // Set the content-type and charset $phpmailer->CharSet = apply_filters('wp_mail_charset', $charset); // Set custom headers if (!empty($headers)) { foreach ((array) $headers as $name => $content) { $phpmailer->AddCustomHeader(sprintf('%1$s: %2$s', $name, $content)); } if (false !== stripos($content_type, 'multipart') && !empty($boundary)) { $phpmailer->AddCustomHeader(sprintf("Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary)); } } if (!empty($attachments)) { foreach ($attachments as $attachment) { try { $phpmailer->AddAttachment($attachment); } catch (phpmailerException $e) { continue; } } } do_action_ref_array('phpmailer_init', array(&$phpmailer)); // Send! try { return $phpmailer->Send(); } catch (phpmailerException $e) { return false; } }
/** * Send mail, similar to PHP's mail * * A true return value does not automatically mean that the user received the * email successfully. It just only means that the method used was able to * process the request without any errors. * * Using the two 'bb_mail_from' and 'bb_mail_from_name' hooks allow from * creating a from address like 'Name <*****@*****.**>' when both are set. If * just 'bb_mail_from' is set, then just the email address will be used with no * name. * * The default content type is 'text/plain' which does not allow using HTML. * However, you can set the content type of the email by using the * 'bb_mail_content_type' filter. * * The default charset is based on the charset used on the blog. The charset can * be set using the 'bb_mail_charset' filter. * * @uses apply_filters() Calls 'bb_mail' hook on an array of all of the parameters. * @uses apply_filters() Calls 'bb_mail_from' hook to get the from email address. * @uses apply_filters() Calls 'bb_mail_from_name' hook to get the from address name. * @uses apply_filters() Calls 'bb_mail_content_type' hook to get the email content type. * @uses apply_filters() Calls 'bb_mail_charset' hook to get the email charset * @uses do_action_ref_array() Calls 'bb_phpmailer_init' hook on the reference to * phpmailer object. * @uses PHPMailer * * @param string $to Email address to send message * @param string $subject Email subject * @param string $message Message contents * @param string|array $headers Optional. Additional headers. * @param string|array $attachments Optional. Files to attach. * @return bool Whether the email contents were sent successfully. */ function bb_mail($to, $subject, $message, $headers = '', $attachments = array()) { // Compact the input, apply the filters, and extract them back out extract(apply_filters('bb_mail', compact('to', 'subject', 'message', 'headers', 'attachments'))); if (!is_array($attachments)) { $attachments = explode("\n", $attachments); } global $bb_phpmailer; // (Re)create it, if it's gone missing if (!is_object($bb_phpmailer) || !is_a($bb_phpmailer, 'PHPMailer')) { require_once BACKPRESS_PATH . 'class.mailer.php'; require_once BACKPRESS_PATH . 'class.mailer-smtp.php'; $bb_phpmailer = new PHPMailer(); } // Headers if (empty($headers)) { $headers = array(); } else { if (!is_array($headers)) { // Explode the headers out, so this function can take both // string headers and an array of headers. $tempheaders = (array) explode("\n", $headers); } else { $tempheaders = $headers; } $headers = array(); // If it's actually got contents if (!empty($tempheaders)) { // Iterate through the raw headers foreach ((array) $tempheaders as $header) { if (strpos($header, ':') === false) { if (false !== stripos($header, 'boundary=')) { $parts = preg_split('/boundary=/i', trim($header)); $boundary = trim(str_replace(array("'", '"'), '', $parts[1])); } continue; } // Explode them out list($name, $content) = explode(':', trim($header), 2); // Cleanup crew $name = trim($name); $content = trim($content); // Mainly for legacy -- process a From: header if it's there if ('from' == strtolower($name)) { if (strpos($content, '<') !== false) { // So... making my life hard again? $from_name = substr($content, 0, strpos($content, '<') - 1); $from_name = str_replace('"', '', $from_name); $from_name = trim($from_name); $from_email = substr($content, strpos($content, '<') + 1); $from_email = str_replace('>', '', $from_email); $from_email = trim($from_email); } else { $from_email = trim($content); } } elseif ('content-type' == strtolower($name)) { if (strpos($content, ';') !== false) { list($type, $charset) = explode(';', $content); $content_type = trim($type); if (false !== stripos($charset, 'charset=')) { $charset = trim(str_replace(array('charset=', '"'), '', $charset)); } elseif (false !== stripos($charset, 'boundary=')) { $boundary = trim(str_replace(array('BOUNDARY=', 'boundary=', '"'), '', $charset)); $charset = ''; } } else { $content_type = trim($content); } } elseif ('cc' == strtolower($name)) { $cc = explode(",", $content); } elseif ('bcc' == strtolower($name)) { $bcc = explode(",", $content); } else { // Add it to our grand headers array $headers[trim($name)] = trim($content); } } } } // Empty out the values that may be set $bb_phpmailer->ClearAddresses(); $bb_phpmailer->ClearAllRecipients(); $bb_phpmailer->ClearAttachments(); $bb_phpmailer->ClearBCCs(); $bb_phpmailer->ClearCCs(); $bb_phpmailer->ClearCustomHeaders(); $bb_phpmailer->ClearReplyTos(); // From email and name // If we don't have a name from the input headers if (!isset($from_name)) { $from_name = bb_get_option('name'); } // If we don't have an email from the input headers if (!isset($from_email)) { $from_email = bb_get_option('from_email'); } // If there is still no email address if (!$from_email) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']); if (substr($sitename, 0, 4) == 'www.') { $sitename = substr($sitename, 4); } $from_email = 'bbpress@' . $sitename; } // Plugin authors can override the potentially troublesome default $bb_phpmailer->From = apply_filters('bb_mail_from', $from_email); $bb_phpmailer->FromName = apply_filters('bb_mail_from_name', $from_name); // Set destination address $bb_phpmailer->AddAddress($to); // Set mail's subject and body $bb_phpmailer->Subject = $subject; $bb_phpmailer->Body = $message; // Add any CC and BCC recipients if (!empty($cc)) { foreach ((array) $cc as $recipient) { $bb_phpmailer->AddCc(trim($recipient)); } } if (!empty($bcc)) { foreach ((array) $bcc as $recipient) { $bb_phpmailer->AddBcc(trim($recipient)); } } // Set to use PHP's mail() $bb_phpmailer->IsMail(); // Set Content-Type and charset // If we don't have a content-type from the input headers if (!isset($content_type)) { $content_type = 'text/plain'; } $content_type = apply_filters('bb_mail_content_type', $content_type); $bb_phpmailer->ContentType = $content_type; // Set whether it's plaintext or not, depending on $content_type if ($content_type == 'text/html') { $bb_phpmailer->IsHTML(true); } // If we don't have a charset from the input headers if (!isset($charset)) { $charset = bb_get_option('charset'); } // Set the content-type and charset $bb_phpmailer->CharSet = apply_filters('bb_mail_charset', $charset); // Set custom headers if (!empty($headers)) { foreach ((array) $headers as $name => $content) { $bb_phpmailer->AddCustomHeader(sprintf('%1$s: %2$s', $name, $content)); } if (false !== stripos($content_type, 'multipart') && !empty($boundary)) { $bb_phpmailer->AddCustomHeader(sprintf("Content-Type: %s;\n\t boundary=\"%s\"", $content_type, $boundary)); } } if (!empty($attachments)) { foreach ($attachments as $attachment) { $bb_phpmailer->AddAttachment($attachment); } } do_action_ref_array('bb_phpmailer_init', array(&$bb_phpmailer)); // Send! $result = @$bb_phpmailer->Send(); return $result; }
/** * @param integer $action */ function send_mail($id_entry, $action, $dformat, $tab_id_moderes = array()) { global $vocab, $grrSettings, $locale, $weekstarts, $enable_periods, $periods_name; $message_erreur = ''; // $action = 1 -> Création // $action = 2 -> Modification // $action = 3 -> Suppression // $action = 4 -> Suppression automatique // $action = 5 -> réservation en attente de modération // $action = 6 -> Résultat d'une décision de modération // $action = 7 -> Notification d'un retard dans la restitution d'une ressource. /* fixme faire le tri entre phpMailer et la class my_mailer */ /* todo ajouter un $port smtp dans les settings */ require_once 'phpmailer/PHPMailerAutoload.php'; define('GRR_FROM', Settings::get('grr_mail_from')); define('GRR_FROMNAME', Settings::get('grr_mail_fromname')); require_once './include/mail.inc.php'; //$m = new my_phpmailer(); $mail = new PHPMailer(); if (Settings::get('grr_mail_method') == 'smtp') { $smtpUsername = Settings::get('grr_mail_Username'); $smtpPassword = Settings::get('grr_mail_Password'); if ($smtpUsername != "") { $mail->SMTPAuth = true; $mail->Username = $smtpUsername; $mail->Password = $smtpPassword; } else { $mail->SMTPAuth = false; } $mail->Host = Settings::get('grr_mail_smtp'); $mail->Port = 587; $mail->isSMTP(); } else { $mail->isSendMail(); } //$mail->SMTPDebug = 2; //$mail->Debugoutput = 'html'; $mail->CharSet = 'UTF-8'; $mail->setFrom(GRR_FROM, GRR_FROMNAME); $mail->SetLanguage("fr", "./phpmailer/language/"); setlocale(LC_ALL, $locale); $sql = "SELECT " . TABLE_PREFIX . "_entry.name,\n\t" . TABLE_PREFIX . "_entry.description,\n\t" . TABLE_PREFIX . "_entry.beneficiaire,\n\t" . TABLE_PREFIX . "_room.room_name,\n\t" . TABLE_PREFIX . "_area.area_name,\n\t" . TABLE_PREFIX . "_entry.type,\n\t" . TABLE_PREFIX . "_entry.room_id,\n\t" . TABLE_PREFIX . "_entry.repeat_id,\n\t" . grr_sql_syntax_timestamp_to_unix("" . TABLE_PREFIX . "_entry.timestamp") . ",\n\t(" . TABLE_PREFIX . "_entry.end_time - " . TABLE_PREFIX . "_entry.start_time),\n\t" . TABLE_PREFIX . "_entry.start_time,\n\t" . TABLE_PREFIX . "_entry.end_time,\n\t" . TABLE_PREFIX . "_room.area_id,\n\t" . TABLE_PREFIX . "_room.delais_option_reservation,\n\t" . TABLE_PREFIX . "_entry.option_reservation,\n\t" . TABLE_PREFIX . "_entry.moderate,\n\t" . TABLE_PREFIX . "_entry.beneficiaire_ext,\n\t" . TABLE_PREFIX . "_entry.jours,\n\t" . TABLE_PREFIX . "_entry.clef,\n\t" . TABLE_PREFIX . "_entry.courrier\n\tFROM " . TABLE_PREFIX . "_entry, " . TABLE_PREFIX . "_room, " . TABLE_PREFIX . "_area\n\tWHERE " . TABLE_PREFIX . "_entry.room_id = " . TABLE_PREFIX . "_room.id\n\tAND " . TABLE_PREFIX . "_room.area_id = " . TABLE_PREFIX . "_area.id\n\tAND " . TABLE_PREFIX . "_entry.id='" . protect_data_sql($id_entry) . "'\n\t"; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, grr_sql_error()); } if (grr_sql_count($res) < 1) { fatal_error(0, get_vocab('invalid_entry_id')); } $row = grr_sql_row($res, 0); grr_sql_free($res); get_planning_area_values($row[12]); $breve_description = bbcode(removeMailUnicode(htmlspecialchars($row[0])), 'nobbcode'); $description = bbcode(removeMailUnicode(htmlspecialchars($row[1])), 'nobbcode'); $beneficiaire = htmlspecialchars($row[2]); $room_name = removeMailUnicode(htmlspecialchars($row[3])); $area_name = removeMailUnicode(htmlspecialchars($row[4])); $room_id = $row[6]; $repeat_id = $row[7]; $date_avis = strftime("%Y/%m/%d", $row[10]); $delais_option_reservation = $row[13]; $option_reservation = $row[14]; $moderate = $row[15]; $beneficiaire_ext = htmlspecialchars($row[16]); $jours_cycle = htmlspecialchars($row[17]); $duration = $row[9]; if ($enable_periods == 'y') { list($start_period, $start_date) = period_date_string($row[10]); } else { $start_date = time_date_string($row[10], $dformat); } $rep_type = 0; if ($repeat_id != 0) { $res = grr_sql_query("SELECT rep_type, end_date, rep_opt, rep_num_weeks FROM " . TABLE_PREFIX . "_repeat WHERE id='" . protect_data_sql($repeat_id) . "'"); if (!$res) { fatal_error(0, grr_sql_error()); } $test = grr_sql_count($res); if ($test != 1) { fatal_error(0, "Deux reservation on le meme ID."); } else { $row2 = grr_sql_row($res, 0); $rep_type = $row2[0]; $rep_end_date = strftime($dformat, $row2[1]); $rep_opt = $row2[2]; $rep_num_weeks = $row2[3]; } grr_sql_free($res); } if ($enable_periods == 'y') { toPeriodString($start_period, $duration, $dur_units); } else { toTimeString($duration, $dur_units); } $weeklist = array("unused", "every week", "week 1/2", "week 1/3", "week 1/4", "week 1/5"); if ($rep_type == 2) { $affiche_period = $vocab[$weeklist[$rep_num_weeks]]; } else { $affiche_period = $vocab['rep_type_' . $rep_type]; } // Le bénéficiaire $beneficiaire_email = affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, "onlymail"); if ($beneficiaire != "") { $beneficiaire_actif = grr_sql_query1("SELECT etat FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"); if ($beneficiaire_actif == -1) { $beneficiaire_actif = 'actif'; } // Cas des admins } else { if ($beneficiaire_ext != "" && $beneficiaire_email != "") { $beneficiaire_actif = "actif"; } else { $beneficiaire_actif = "inactif"; } } // Utilisateur ayant agit sur la réservation $user_login = getUserName(); $user_email = grr_sql_query1("SELECT email FROM " . TABLE_PREFIX . "_utilisateurs WHERE login='******'"); // // Elaboration du message destiné aux utilisateurs désignés par l'admin dans la partie "Mails automatiques" // //Nom de l'établissement et mention "mail automatique" $message = removeMailUnicode(Settings::get("company")) . " - " . $vocab["title_mail"]; // Url de GRR $message = $message . traite_grr_url("", "y") . "\n\n"; $sujet = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; if ($action == 1) { $sujet = $sujet . $vocab["subject_mail_creation"]; $message .= $vocab["the_user"] . affiche_nom_prenom_email($user_login, "", "formail"); $message = $message . $vocab["creation_booking"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") \n"; } else { if ($action == 2) { $sujet = $sujet . $vocab["subject_mail_modify"]; if ($moderate == 1) { $sujet .= " (" . $vocab["en_attente_moderation"] . ")"; } $message .= $vocab["the_user"] . affiche_nom_prenom_email($user_login, "", "formail"); $message = $message . $vocab["modify_booking"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") "; } else { if ($action == 3) { $sujet = $sujet . $vocab["subject_mail_delete"]; if ($moderate == 1) { $sujet .= " (" . $vocab["en_attente_moderation"] . ")"; } $message .= $vocab["the_user"] . affiche_nom_prenom_email($user_login, "", "formail"); $message = $message . $vocab["delete_booking"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") \n"; } else { if ($action == 4) { $sujet = $sujet . $vocab["subject_mail_delete"]; $message = $message . $vocab["suppression_automatique"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") \n"; } else { if ($action == 5) { $sujet = $sujet . $vocab["subject_mail_moderation"]; $message = $message . $vocab["reservation_en_attente_de_moderation"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") \n"; } else { if ($action == 6) { $sujet = $sujet . $vocab["subject_mail_decision_moderation"]; $resmoderate = grr_sql_query("SELECT moderate, motivation_moderation FROM " . TABLE_PREFIX . "_entry_moderate WHERE id ='" . protect_data_sql($id_entry) . "'"); if (!$resmoderate) { fatal_error(0, grr_sql_error()); } if (grr_sql_count($resmoderate) < 1) { fatal_error(0, get_vocab('invalid_entry_id')); } $rowModerate = grr_sql_row($resmoderate, 0); grr_sql_free($resmoderate); $moderate_decision = $rowModerate[0]; $moderate_description = $rowModerate[1]; $message .= $vocab["the_user"] . affiche_nom_prenom_email($user_login, "", "formail"); $message = $message . $vocab["traite_moderation"]; $message = $message . $vocab["the_room"] . $room_name . " (" . $area_name . ") "; $message = $message . $vocab["reservee au nom de"]; $message = $message . $vocab["the_user"] . affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, "formail") . " \n"; if ($moderate_decision == 2) { $message .= "\n" . $vocab["moderation_acceptee"]; } else { if ($moderate_decision == 3) { $message .= "\n" . $vocab["moderation_refusee"]; } } if ($moderate_description != "") { $message .= "\n" . $vocab["motif"] . $vocab["deux_points"]; $message .= $moderate_description . " \n----"; } $message .= "\n" . $vocab["voir_details"] . $vocab["deux_points"] . "\n"; if (count($tab_id_moderes) == 0) { $message .= "\n" . traite_grr_url("", "y") . "view_entry.php?id=" . $id_entry; } else { foreach ($tab_id_moderes as $id_moderes) { $message .= "\n" . traite_grr_url("", "y") . "view_entry.php?id=" . $id_moderes; } } $message .= "\n\n" . $vocab["rappel_de_la_demande"] . $vocab["deux_points"] . "\n"; } else { if ($action == 7) { $sujet .= $vocab["subject_mail_retard"]; $message .= $vocab["message_mail_retard"] . $vocab["deux_points"] . " \n"; $message .= $room_name . " (" . $area_name . ") \n"; $message .= $vocab["nom emprunteur"] . $vocab["deux_points"]; $message .= affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, "formail") . " \n"; if ($beneficiaire_email != "") { $message .= $vocab["un email envoye"] . $beneficiaire_email . " \n"; } $message .= "\n" . $vocab["changer statut lorsque ressource restituee"] . $vocab["deux_points"]; $message .= "\n" . traite_grr_url("", "y") . "view_entry.php?id=" . $id_entry . " \n"; } } } } } } } if ($action == 2 || $action == 3) { $message = $message . $vocab["reservee au nom de"]; $message = $message . $vocab["the_user"] . affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, "formail") . " \n"; } if ($action == 5 || $action == 7) { $repondre = Settings::get("webmaster_email"); } else { $repondre = $user_email; } // // Infos sur la réservation // $reservation = ''; $reservation = $reservation . $vocab["start_of_the_booking"] . " " . $start_date . "\n"; $reservation = $reservation . $vocab["duration"] . " " . $duration . " " . $dur_units . "\n"; if (trim($breve_description) != "") { $reservation = $reservation . $vocab["namebooker"] . preg_replace("/ /", " ", $vocab["deux_points"]) . " " . $breve_description . "\n"; } else { $reservation = $reservation . $vocab["entryid"] . $room_id . "\n"; } if ($description != '') { $reservation = $reservation . $vocab["description"] . " " . $description . "\n"; } // Champ additionnel $reservation .= affichage_champ_add_mails($id_entry); // Type de réservation $temp = grr_sql_query1("SELECT type_name FROM " . TABLE_PREFIX . "_type_area WHERE type_letter='" . $row[5] . "'"); if ($temp == -1) { $temp = "?" . $row[5] . "?"; } else { $temp = removeMailUnicode($temp); } $reservation = $reservation . $vocab["type"] . preg_replace("/ /", " ", $vocab["deux_points"]) . " " . $temp . "\n"; if ($rep_type != 0) { $reservation = $reservation . $vocab["rep_type"] . " " . $affiche_period . "\n"; } if ($rep_type != 0) { if ($rep_type == 2) { $opt = ""; for ($i = 0; $i < 7; $i++) { $daynum = ($i + $weekstarts) % 7; if ($rep_opt[$daynum]) { $opt .= day_name($daynum) . " "; } } if ($opt) { $reservation = $reservation . $vocab["rep_rep_day"] . " " . $opt . "\n"; } } if ($rep_type == 6) { if (Settings::get("jours_cycles_actif") == "Oui") { $reservation = $reservation . $vocab["rep_type_6"] . preg_replace("/ /", " ", $vocab["deux_points"]) . ucfirst(substr($vocab["rep_type_6"], 0, 1)) . $jours_cycle . "\n"; } } $reservation = $reservation . $vocab["rep_end_date"] . " " . $rep_end_date . "\n"; } if ($delais_option_reservation > 0 && $option_reservation != -1) { $reservation = $reservation . "*** " . $vocab["reservation_a_confirmer_au_plus_tard_le"] . " " . time_date_string_jma($option_reservation, $dformat) . " ***\n"; } $reservation = $reservation . "-----\n"; $message = $message . $reservation; $message = $message . $vocab["msg_no_email"] . Settings::get("webmaster_email"); $message = html_entity_decode($message); $sql = "SELECT u.email FROM " . TABLE_PREFIX . "_utilisateurs u, " . TABLE_PREFIX . "_j_mailuser_room j WHERE (j.id_room='" . protect_data_sql($room_id) . "' AND u.login=j.login and u.etat='actif') ORDER BY u.nom, u.prenom"; $res = grr_sql_query($sql); $nombre = grr_sql_count($res); if ($nombre > 0) { $tab_destinataire = array(); for ($i = 0; $row = grr_sql_row($res, $i); $i++) { if ($row[0] != "") { $tab_destinataire[] = $row[0]; } } foreach ($tab_destinataire as $value) { if (Settings::get("grr_mail_Bcc") == "y") { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); if ($action == 7) { $mail_admin = find_user_room($room_id); if (count($mail_admin) > 0) { foreach ($mail_admin as $value) { if (Settings::get("grr_mail_Bcc") == "y") { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); } if ($action == 7) { $sujet7 = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; $sujet7 .= $vocab["subject_mail_retard"]; $message7 = removeMailUnicode(Settings::get("company")) . " - " . $vocab["title_mail"]; $message7 .= traite_grr_url("", "y") . "\n\n"; $message7 .= $vocab["ressource empruntee non restituée"] . "\n"; $message7 .= $room_name . " (" . $area_name . ")"; $message7 .= "\n" . $reservation; $message7 = html_entity_decode($message7); $destinataire7 = $beneficiaire_email; $repondre7 = Settings::get("webmaster_email"); $mail->AddAddress($destinataire7); $mail->Subject = $sujet7; $mail->Body = $message7; $mail->AddReplyTo($repondre7); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 4) { $destinataire4 = $beneficiaire_email; $repondre4 = Settings::get("webmaster_email"); $mail->AddAddress($destinataire4); $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre4); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 5) { $mail_admin = find_user_room($room_id); if (count($mail_admin) > 0) { foreach ($mail_admin as $value) { if (Settings::get("grr_mail_Bcc") == "y") { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $sujet5 = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; $sujet5 .= $vocab["subject_mail_moderation"]; $message5 = removeMailUnicode(Settings::get("company")) . " - " . $vocab["title_mail"]; $message5 .= traite_grr_url("", "y") . "\n\n"; $message5 .= $vocab["subject_a_moderer"]; $message5 .= "\n" . traite_grr_url("", "y") . "validation.php?id=" . $id_entry; $message5 .= "\n\n" . $vocab['created_by'] . affiche_nom_prenom_email($user_login, "", "formail"); $message5 .= "\n" . $vocab['room'] . $vocab['deux_points'] . $room_name . " (" . $area_name . ") \n"; $message5 = html_entity_decode($message5); $repondre5 = Settings::get("webmaster_email"); $mail->Subject = $sujet5; $mail->Body = $message5; $mail->AddReplyTo($repondre5); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); } if ($action == 5 && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet5 = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; $sujet5 .= $vocab["subject_mail_moderation"]; $message5 = removeMailUnicode(Settings::get("company")) . " - " . $vocab["title_mail"]; $message5 .= traite_grr_url("", "y") . "\n\n"; $message5 .= $vocab["texte_en_attente_de_moderation"]; $message5 .= "\n" . $vocab["rappel_de_la_demande"] . $vocab["deux_points"]; $message5 .= "\n" . $vocab["the_room"] . $room_name . " (" . $area_name . ")"; $message5 .= "\n" . $reservation; $message5 = html_entity_decode($message5); $destinataire5 = $beneficiaire_email; $repondre5 = Settings::get("webmaster_email"); $mail->AddAddress($destinataire5); $mail->Subject = $sujet5; $mail->Body = $message5; $mail->AddReplyTo($repondre5); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 6 && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet6 = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; $sujet6 .= $vocab["subject_mail_decision_moderation"]; $message6 = $message; $destinataire6 = $beneficiaire_email; $repondre6 = $user_email; $mail->AddAddress($destinataire6); $mail->Subject = $sujet6; $mail->Body = $message6; $mail->AddReplyTo($repondre6); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } // Cas d'une création, modification ou suppression d'un message par un utilisateur différent du bénéficiaire : // On envoie un message au bénéficiaire de la réservation pour l'avertir d'une modif ou d'une suppression if (($action == 1 || $action == 2 || $action == 3) && (strtolower($user_login) != strtolower($beneficiaire) || Settings::get('send_always_mail_to_creator') == '1') && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet2 = $vocab["subject_mail1"] . $room_name . " - " . $date_avis; $message2 = removeMailUnicode(Settings::get("company")) . " - " . $vocab["title_mail"]; $message2 = $message2 . traite_grr_url("", "y") . "\n\n"; $message2 = $message2 . $vocab["the_user"] . affiche_nom_prenom_email($user_login, "", "formail"); if ($action == 1) { $sujet2 = $sujet2 . $vocab["subject_mail_creation"]; $message2 = $message2 . $vocab["creation_booking_for_you"]; $message2 = $message2 . $vocab["the_room"] . $room_name . " (" . $area_name . ")."; } else { if ($action == 2) { $sujet2 = $sujet2 . $vocab["subject_mail_modify"]; $message2 = $message2 . $vocab["modify_booking"]; $message2 = $message2 . $vocab["the_room"] . $room_name . " (" . $area_name . ")"; $message2 = $message2 . $vocab["created_by_you"]; } else { $sujet2 = $sujet2 . $vocab["subject_mail_delete"]; $message2 = $message2 . $vocab["delete_booking"]; $message2 = $message2 . $vocab["the_room"] . $room_name . " (" . $area_name . ")"; $message2 = $message2 . $vocab["created_by_you"]; } } $message2 = $message2 . "\n" . $reservation; $message2 = html_entity_decode($message2); $destinataire2 = $beneficiaire_email; $repondre2 = $user_email; $mail->AddAddress($destinataire2); $mail->Subject = $sujet2; $mail->Body = $message2; $mail->AddReplyTo($repondre2); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } return $message_erreur; }
/** * 发送邮件 * @param $pAddress 地址 * @param $pSubject 标题 * @param $pBody 内容 */ static function mailto($pAddress, $pSubject, $pBody) { static $mail; if (!$mail) { require preg_replace('/Tool/', '', dirname(__FILE__)) . 'Source/PHPMailer/PHPmailer.php'; $tMailconfig = Yaf_Registry::get("config")->mail->default->toArray(); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'utf-8'; $mail->SMTPAuth = true; $mail->Port = 25; $mail->Host = $tMailconfig['host']; $mail->From = $tMailconfig['from']; $mail->Username = $tMailconfig['username']; $mail->Password = $tMailconfig['password']; $mail->FromName = "拍医拍"; $mail->IsHTML(true); } $mail->ClearAddresses(); $mail->ClearCCs(); $mail->ClearBCCs(); $mail->AddAddress($pAddress); #$pCcAddress && $mail->AddBCC($pCcAddress); $mail->Subject = $pSubject; $mail->MsgHTML(preg_replace('/\\\\/', '', $pBody)); if ($mail->Send()) { return 1; } else { return $mail->ErrorInfo; } }
function plgAfterSave(&$model) { appLogMessage('**** BEGIN Notifications Plugin AfterSave', 'database'); # Read cms mail config settings $configSendmailPath = cmsFramework::getConfig('sendmail'); $configSmtpAuth = cmsFramework::getConfig('smtpauth'); $configSmtpUser = cmsFramework::getConfig('smtpuser'); $configSmtpPass = cmsFramework::getConfig('smtppass'); $configSmtpHost = cmsFramework::getConfig('smtphost'); $configSmtpSecure = cmsFramework::getConfig('smtpsecure'); $configSmtpPort = cmsFramework::getConfig('smtpport'); $configMailFrom = cmsFramework::getConfig('mailfrom'); $configFromName = cmsFramework::getConfig('fromname'); $configMailer = cmsFramework::getConfig('mailer'); if (!class_exists('PHPMailer')) { App::import('Vendor', 'phpmailer' . DS . 'class.phpmailer'); } $mail = new PHPMailer(); $mail->CharSet = cmsFramework::getCharset(); $mail->SetLanguage('en', S2_VENDORS . 'PHPMailer' . DS . 'language' . DS); $mail->Mailer = $configMailer; // Mailer used mail,sendmail,smtp switch ($configMailer) { case 'smtp': $mail->Host = $configSmtpHost; $mail->SMTPAuth = $configSmtpAuth; $mail->Username = $configSmtpUser; $mail->Password = $configSmtpPass; $mail->SMTPSecure = $configSmtpSecure != '' ? $configSmtpSecure : ''; $mail->Port = $configSmtpPort; break; case 'sendmail': $mail->Sendmail = $configSendmailPath; break; default: break; } $mail->isHTML(true); $mail->From = $configMailFrom; $mail->FromName = $configFromName; # In this observer model we just use the existing data to send the email notification switch ($this->notifyModel->name) { # Notification for new/edited listings case 'Listing': if ($this->c->Config->notify_content || $this->c->Config->notify_user_listing) { $this->c->autoRender = false; $listing = $this->_getListing($model); $this->c->set(array('isNew' => isset($model->data['insertid']), 'User' => $this->c->_user, 'listing' => $listing)); } else { return; } // Admin listing email if ($this->c->Config->notify_content) { $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearBCCs(); # Process configuration emails if ($this->c->Config->notify_content_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_content_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } $subject = isset($model->data['insertid']) ? __t("New listing", true) . ": {$listing['Listing']['title']}" : __t("Edited listing", true) . ": {$listing['Listing']['title']}"; $guest = !$this->c->_user->id ? ' (Guest)' : " ({$this->c->_user->id})"; $author = $this->c->_user->id ? $this->c->_user->name : 'Guest'; $message = $this->c->render('email_templates', 'admin_listing_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send()) { appLogMessage(array("Admin listing message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } // End admin listing email // User listing email - to user submitting the listing as long as he is also the owner of the listing if ($this->c->Config->notify_user_listing) { $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearBCCs(); //Check if submitter and owner are the same or else email is not sent // This is to prevent the email from going out if admins are doing the editing if ($this->c->_user->id == $listing['User']['user_id']) { // Process configuration emails if ($this->c->Config->notify_user_listing_emails != '') { $recipient = explode("\n", $this->c->Config->notify_user_listing_emails); foreach ($recipient as $bcc) { if (trim($bcc) != '') { $mail->AddBCC(trim($bcc)); } } } $mail->AddAddress(trim($listing['User']['email'])); $subject = isset($model->data['insertid']) ? sprintf(__t("New listing: %s", true), $listing['Listing']['title']) : sprintf(__t("Edited listing: %s", true), $listing['Listing']['title']); $guest = !$this->c->_user->id ? ' (Guest)' : " ({$this->c->_user->id})"; $author = $this->c->_user->id ? $this->c->_user->name : 'Guest'; $message = $this->c->render('email_templates', 'user_listing_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send()) { appLogMessage(array("User listing message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } } // End user listing email break; # Notification for new/edited reviews # Notification for new/edited reviews case 'Review': // Perform common actions for all review notifications if ($this->c->Config->notify_review || $this->c->Config->notify_user_review || $this->c->Config->notify_owner_review) { $extension = $model->data['Review']['mode']; $review = $this->_getReview($model); $listing = $review; $entry_title = $listing['Listing']['title']; $this->c->autoRender = false; $this->c->set(array('isNew' => isset($model->data['insertid']), 'extension' => $extension, 'listing' => $listing, 'User' => $this->c->_user, 'review' => $review)); } else { return; } // Admin review email if ($this->c->Config->notify_review) { $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearBCCs(); # Process configuration emails if ($this->c->Config->notify_review_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_review_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } $subject = isset($model->data['insertid']) ? sprintf(__t("New review: %s", true), $entry_title) : sprintf(__t("Edited review: %s", true), $entry_title); $message = $this->c->render('email_templates', 'admin_review_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send()) { appLogMessage(array("Admin review message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } // User review email - sent to review submitter if ($this->c->Config->notify_user_review && $this->c->_user->id == $review['User']['user_id'] && !empty($review['User']['email'])) { $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearBCCs(); //Check if submitter and owner are the same or else email is not sent // This is to prevent the email from going out if admins are doing the editing if ($this->c->_user->id == $review['User']['user_id']) { // Process configuration emails if ($this->c->Config->notify_user_review_emails != '') { $recipient = explode("\n", $this->c->Config->notify_user_review_emails); foreach ($recipient as $bcc) { if (trim($bcc) != '') { $mail->AddBCC(trim($bcc)); } } } $mail->AddAddress(trim($review['User']['email'])); $subject = isset($model->data['insertid']) ? sprintf(__t("New review: %s", true), $entry_title) : sprintf(__t("Edited review: %s", true), $entry_title); $message = $this->c->render('email_templates', 'user_review_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send()) { appLogMessage(array("User review message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } } // Listing owner review email if ($this->c->Config->notify_owner_review && isset($listing['ListingUser']['email'])) { $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearBCCs(); // Process configuration emails if ($this->c->Config->notify_owner_review_emails != '') { $recipient = explode("\n", $this->c->Config->notify_owner_review_emails); foreach ($recipient as $bcc) { if (trim($bcc) != '') { $mail->AddBCC(trim($bcc)); } } } $mail->AddAddress(trim($listing['ListingUser']['email'])); $subject = isset($model->data['insertid']) ? sprintf(__t("New review: %s", true), $entry_title) : sprintf(__t("Edited review: %s", true), $entry_title); $message = $this->c->render('email_templates', 'owner_review_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send()) { appLogMessage(array("Listing owner review message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } break; # Notification for new owner replies to user reviews # Notification for new owner replies to user reviews case 'OwnerReply': if ($this->c->Config->notify_owner_reply) { # Process configuration emails if ($this->c->Config->notify_owner_reply_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_owner_reply_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } # Get review data $this->c->Review->runProcessRatings = false; $review = $this->c->Review->findRow(array('conditions' => array('Review.id = ' . (int) $model->data['OwnerReply']['id']))); $extension = $review['Review']['extension']; # Load jReviewsEverywhere extension model $name = 'everywhere_' . $extension; App::import('Model', $name, 'jreviews'); $class_name = inflector::camelize('everywhere_' . $extension) . 'Model'; $EverywhereListingModel = new $class_name(); # Get the listing title based on the extension being reviewed $listing = $EverywhereListingModel->findRow(array('conditions' => array("Listing.{$EverywhereListingModel->realKey} = " . $review['Review']['listing_id']))); $subject = sprintf(__t("Owner review reply submitted for listing %s", true), $listing['Listing']['title']); $this->c->autoRender = false; $this->c->set(array('User' => $this->c->_user, 'reply' => $model->data, 'review' => $review, 'listing' => $listing)); $message = $this->c->render('email_templates', 'admin_owner_reply_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send() && _MVC_DEBUG_ERR) { appLogMessage(array("Owner reply message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } break; # Notification for new review reports # Notification for new review reports case 'Report': if ($this->c->Config->notify_report) { # Process configuration emails if ($this->c->Config->notify_review_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_review_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } # Get review data $this->c->Review->runProcessRatings = false; $review = $this->c->Review->findRow(array('conditions' => array('Review.id = ' . (int) $model->data['Report']['review_id'])), array()); $extension = $review['Review']['extension']; # Load jReviewsEverywhere extension model $name = 'everywhere_' . $extension; App::import('Model', $name, 'jreviews'); $class_name = inflector::camelize('everywhere_' . $extension) . 'Model'; $EverywhereListingModel = new $class_name(); # Get the listing title based on the extension being reviewed $listing = $EverywhereListingModel->findRow(array('conditions' => array("Listing.{$EverywhereListingModel->realKey} = " . $review['Review']['listing_id']))); $subject = __t("A new report has been submitted", true); $this->c->autoRender = false; $this->c->set(array('User' => $this->c->_user, 'report' => $model->data, 'review' => $review, 'listing' => $listing)); $message = $this->c->render('email_templates', 'admin_report_notification'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send() && _MVC_DEBUG_ERR) { appLogMessage(array("Review report message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } break; case 'Discussion': if ($this->c->Config->notify_review_post) { # Process configuration emails if ($this->c->Config->notify_review_post_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_review_post_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } # Get review data $this->c->Review->runProcessRatings = false; $review = $this->c->Review->findRow(array('conditions' => array('Review.id = ' . (int) $model->data['Discussion']['review_id']))); $extension = $review['Review']['extension']; # Load jReviewsEverywhere extension model $name = 'everywhere_' . $extension; App::import('Model', $name, 'jreviews'); $class_name = inflector::camelize('everywhere_' . $extension) . 'Model'; $EverywhereListingModel = new $class_name(); # Get the listing title based on the extension being reviewed $listing = $EverywhereListingModel->findRow(array('conditions' => array("Listing.{$EverywhereListingModel->realKey} = " . $review['Review']['listing_id']))); $subject = isset($model->data['insertid']) ? sprintf(__t("New comment for review: %s", true), $review['Review']['title']) : sprintf(__t("Edited comment for review: %s", true), $review['Review']['title']); $this->c->autoRender = false; $this->c->set(array('User' => $this->c->_user, 'post' => $model->data, 'review' => $review, 'listing' => $listing)); $message = $this->c->render('email_templates', 'admin_review_discussion_post'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send() && _MVC_DEBUG_ERR) { appLogMessage(array("Review comment message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } break; case 'Claim': if ($this->c->Config->notify_claim) { # Process configuration emails if ($this->c->Config->notify_claim_emails == '') { $mail->AddAddress($configMailFrom); } else { $recipient = explode("\n", $this->c->Config->notify_claim_emails); foreach ($recipient as $to) { if (trim($to) != '') { $mail->AddAddress(trim($to)); } } } # Get claim data $callbacks = array(); $listing = $this->c->Listing->findRow(array('conditions' => array('Listing.id = ' . (int) $model->data['Claim']['listing_id'])), $callbacks); $subject = sprintf(__t("Listing claim submitted for %s", true), $listing['Listing']['title']); $this->c->autoRender = false; $this->c->set(array('User' => $this->c->_user, 'claim' => $model->data['Claim'], 'listing' => $listing)); $message = $this->c->render('email_templates', 'admin_listing_claim'); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->Send() && _MVC_DEBUG_ERR) { appLogMessage(array("Listing claim message was not sent.", "Mailer error: " . $mail->ErrorInfo), 'notifications'); } } break; } $this->published = false; // Run once. With paid listings it is possible for a plugin to run a 2nd time when the order is processed together with the listing (free) return true; }
function SendEmail($sSubject, $sMessage, $attachName, $hasAttach, $sRecipient) { global $sSendType; global $sFromEmailAddress; global $sFromName; global $sLangCode; global $sLanguagePath; global $sSMTPAuth; global $sSMTPUser; global $sSMTPPass; global $sSMTPHost; global $sSERVERNAME; global $sUSER; global $sPASSWORD; global $sDATABASE; global $sSQL_ERP; global $sSQL_EMP; $iUserID = $_SESSION['iUserID']; // Retrieve UserID for faster access // Store these queries in variables. (called on every loop iteration) $sSQLGetEmail = 'SELECT * FROM email_recipient_pending_erp ' . "WHERE erp_usr_id='{$iUserID}' " . 'ORDER BY erp_num_attempt, erp_id LIMIT 1'; // Just run this one ahead of time to get the message subject and body $sSQL = 'SELECT * FROM email_message_pending_emp'; extract(mysql_fetch_array(RunQuery($sSQL))); // Keep track of how long this script has been running. To avoid server // and browser timeouts break out of loop every $sLoopTimeout seconds and // redirect back to EmailSend.php with meta refresh until finished. $tStartTime = time(); $mail = new PHPMailer(); // Set the language for PHPMailer $mail->SetLanguage($sLangCode, $sLanguagePath); if ($mail->IsError()) { echo 'PHPMailer Error with SetLanguage(). Other errors (if any) may not report.<br>'; } $mail->CharSet = 'utf-8'; $mail->From = $sFromEmailAddress; // From email address (User Settings) $mail->FromName = $sFromName; // From name (User Settings) if ($hasAttach) { $mail->AddAttachment("tmp_attach/" . $attachName); } if (strtolower($sSendType) == 'smtp') { $mail->IsSMTP(); // tell the class to use SMTP $mail->SMTPKeepAlive = true; // keep connection open until last email sent $mail->SMTPAuth = $sSMTPAuth; // Server requires authentication if ($sSMTPAuth) { $mail->Username = $sSMTPUser; // SMTP username $mail->Password = $sSMTPPass; // SMTP password } $delimeter = strpos($sSMTPHost, ':'); if ($delimeter === FALSE) { $sSMTPPort = 25; // Default port number } else { $sSMTPPort = substr($sSMTPHost, $delimeter + 1); $sSMTPHost = substr($sSMTPHost, 0, $delimeter); } if (is_int($sSMTPPort)) { $mail->Port = $sSMTPPort; } else { $mail->Port = 25; } $mail->Host = $sSMTPHost; // SMTP server name } else { $mail->IsSendmail(); // tell the class to use Sendmail } $bContinue = TRUE; $sLoopTimeout = 30; // Break out of loop if this time is exceeded $iMaxAttempts = 3; // Error out if an email address fails 3 times while ($bContinue) { // Three ways to get out of this loop // 1. We're finished sending email // 2. Time exceeds $sLoopTimeout // 3. Something strange happens // (maybe user tries to send from multiple sessions // causing counts and timestamps to 'misbehave' ) $tTimeStamp = date('Y-m-d H:i:s'); $mail->Subject = $sSubject; $mail->Body = $sMessage; if ($sRecipient == 'get_recipients_from_mysql') { $rsEmailAddress = RunQuery($sSQLGetEmail); // This query has limit one to pick up one recipient $aRow = mysql_fetch_array($rsEmailAddress); extract($aRow); $mail->AddAddress($erp_email_address); } else { $erp_email_address = $sRecipient; $mail->AddAddress($erp_email_address); $bContinue = FALSE; // Just sending one email } if (!$mail->Send()) { // failed- make a note in the log and the recipient record if ($sRecipient == 'get_recipients_from_mysql') { $sMsg = "Failed sending to: {$erp_email_address} "; $sMsg .= $mail->ErrorInfo; echo "{$sMsg}<br>\n"; AddToEmailLog($sMsg, $iUserID); // Increment the number of attempts for this message $erp_num_attempt++; $sSQL = 'UPDATE email_recipient_pending_erp ' . "SET erp_num_attempt='{$erp_num_attempt}' ," . " erp_failed_time='{$tTimeStamp}' " . "WHERE erp_id='{$erp_id}'"; RunQuery($sSQL); // Check if we've maxed out retry attempts if ($erp_num_attempt < $iMaxAttempts) { echo "Pausing 15 seconds after failure<br>\n"; AddToEmailLog('Pausing 15 seconds after failure', $iUserID); sleep(15); // Delay 15 seconds on failure // The mail server may be having a temporary problem } else { $_SESSION['sEmailState'] = 'error'; $bContinue = FALSE; $sMsg = 'Too many failures. Giving up. You may try to resume later.'; AddToEmailLog($sMsg, $iUserID); } } else { $sMsg = "Failed sending to: {$sRecipient} "; $sMsg .= $mail->ErrorInfo; echo "{$sMsg}<br>\n"; AddToEmailLog($sMsg, $iUserID); } } else { if ($sRecipient == 'get_recipients_from_mysql') { echo "<b>{$erp_email_address}</b> Sent! <br>\n"; $sMsg = "Email sent to: {$erp_email_address}"; AddToEmailLog($sMsg, $iUserID); // Delete this record from the recipient list $sSQL = 'DELETE FROM email_recipient_pending_erp ' . "WHERE erp_email_address='{$erp_email_address}'"; RunQuery($sSQL); } else { echo "<b>{$sRecipient}</b> Sent! <br>\n"; $sMsg = "Email sent to: {$erp_email_address}"; AddToEmailLog($sMsg, $iUserID); } } $mail->ClearAddresses(); $mail->ClearBCCs(); // Are we done? extract(mysql_fetch_array(RunQuery($sSQL_ERP))); // this query counts remaining recipient records if ($sRecipient == 'get_recipients_from_mysql' && $countrecipients == 0) { $bContinue = FALSE; $_SESSION['sEmailState'] = 'finish'; AddToEmailLog('Job Finished', $iUserID); } if (time() - $tStartTime > $sLoopTimeout) { // bail out of this loop if we've taken more than $sLoopTimeout seconds. // The meta refresh will reload this page so we can pick up where // we left off $bContinue = FALSE; } } if (strtolower($sSendType) == 'smtp') { $mail->SmtpClose(); } }
function COM_emailNotification($msgData = array()) { global $_CONF; // define the maximum number of emails allowed per bcc $maxEmailsPerSend = 10; // ensure we have something to send... if (!isset($msgData['htmlmessage']) && !isset($msgData['textmessage'])) { COM_errorLog("COM_emailNotification() - No message data provided"); return false; // no message defined } if (empty($msgData['htmlmessage']) && empty($msgData['textmessage'])) { COM_errorLog("COM_emailNotification() - Empty message data provided"); return false; // no text in either... } if (!isset($msgData['subject']) || empty($msgData['subject'])) { COM_errorLog("COM_emailNotification() - No subject provided"); return false; // must have a subject } $queued = 0; $subject = substr($msgData['subject'], 0, strcspn($msgData['subject'], "\r\n")); $subject = COM_emailEscape($subject); require_once $_CONF['path'] . 'lib/phpmailer/class.phpmailer.php'; $mail = new PHPMailer(); $mail->SetLanguage('en', $_CONF['path'] . 'lib/phpmailer/language/'); $mail->CharSet = COM_getCharset(); if ($_CONF['mail_backend'] == 'smtp') { $mail->IsSMTP(); $mail->Host = $_CONF['mail_smtp_host']; $mail->Port = $_CONF['mail_smtp_port']; if ($_CONF['mail_smtp_secure'] != 'none') { $mail->SMTPSecure = $_CONF['mail_smtp_secure']; } if ($_CONF['mail_smtp_auth']) { $mail->SMTPAuth = true; $mail->Username = $_CONF['mail_smtp_username']; $mail->Password = $_CONF['mail_smtp_password']; } $mail->Mailer = "smtp"; } elseif ($_CONF['mail_backend'] == 'sendmail') { $mail->Mailer = "sendmail"; $mail->Sendmail = $_CONF['mail_sendmail_path']; } else { $mail->Mailer = "mail"; } $mail->WordWrap = 76; if (isset($msgData['htmlmessage']) && !empty($msgData['htmlmessage'])) { $mail->IsHTML(true); $mail->Body = $msgData['htmlmessage']; if (isset($msgData['textmessage']) && !empty($msgData['textmessage'])) { $mail->AltBody = $msgData['textmessage']; } } else { $mail->IsHTML(false); if (isset($msgData['textmessage']) && !empty($msgData['textmessage'])) { $mail->Body = $msgData['textmessage']; } } $mail->Subject = $subject; if (isset($msgData['embeddedImage']) && is_array($msgData['embeddedImage'])) { foreach ($msgData['embeddedImage'] as $embeddedImage) { $mail->AddEmbeddedImage($embeddedImage['file'], $embeddedImage['name'], $embeddedImage['filename'], $embeddedImage['encoding'], $embeddedImage['mime']); } } if (is_array($msgData['from'])) { $mail->From = $msgData['from']['email']; $mail->FromName = $msgData['from']['name']; } else { $mail->From = $msgData['from']; $mail->FromName = $_CONF['site_name']; } $queued = 0; if (is_array($msgData['to'])) { foreach ($msgData['to'] as $to) { if (is_array($to)) { $mail->AddBCC($to['email'], $to['name']); } else { if (COM_isEmail($to)) { $mail->AddBCC($to); } } $queued++; if ($queued >= $maxEmailsPerSend) { if (!$mail->Send()) { COM_errorLog("Email Error: " . $mail->ErrorInfo); } $queued = 0; $mail->ClearBCCs(); } } } if ($queued > 0) { if (!@$mail->Send()) { COM_errorLog("Email Error: " . $mail->ErrorInfo); } } }
function osc_sendMail($params) { // DO NOT send mail if it's a demo if (defined('DEMO')) { return false; } $mail = new PHPMailer(true); $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearAttachments(); $mail->ClearBCCs(); $mail->ClearCCs(); $mail->ClearCustomHeaders(); $mail->ClearReplyTos(); $mail = osc_apply_filter('init_send_mail', $mail, $params); if (osc_mailserver_pop()) { require_once osc_lib_path() . 'phpmailer/class.pop3.php'; $pop = new POP3(); $pop3_host = osc_mailserver_host(); if (array_key_exists('host', $params)) { $pop3_host = $params['host']; } $pop3_port = osc_mailserver_port(); if (array_key_exists('port', $params)) { $pop3_port = $params['port']; } $pop3_username = osc_mailserver_username(); if (array_key_exists('username', $params)) { $pop3_username = $params['username']; } $pop3_password = osc_mailserver_password(); if (array_key_exists('password', $params)) { $pop3_password = $params['password']; } $pop->Authorise($pop3_host, $pop3_port, 30, $pop3_username, $pop3_password, 0); } if (osc_mailserver_auth()) { $mail->IsSMTP(); $mail->SMTPAuth = true; } else { if (osc_mailserver_pop()) { $mail->IsSMTP(); } } $smtpSecure = osc_mailserver_ssl(); if (array_key_exists('password', $params)) { $smtpSecure = $params['ssl']; } if ($smtpSecure != '') { $mail->SMTPSecure = $smtpSecure; } $stmpUsername = osc_mailserver_username(); if (array_key_exists('username', $params)) { $stmpUsername = $params['username']; } if ($stmpUsername != '') { $mail->Username = $stmpUsername; } $smtpPassword = osc_mailserver_password(); if (array_key_exists('password', $params)) { $smtpPassword = $params['password']; } if ($smtpPassword != '') { $mail->Password = $smtpPassword; } $smtpHost = osc_mailserver_host(); if (array_key_exists('host', $params)) { $smtpHost = $params['host']; } if ($smtpHost != '') { $mail->Host = $smtpHost; } $smtpPort = osc_mailserver_port(); if (array_key_exists('port', $params)) { $smtpPort = $params['port']; } if ($smtpPort != '') { $mail->Port = $smtpPort; } $from = osc_mailserver_mail_from(); if (empty($from)) { $from = 'osclass@' . osc_get_domain(); if (array_key_exists('from', $params)) { $from = $params['from']; } } $from_name = osc_mailserver_name_from(); if (empty($from_name)) { $from_name = osc_page_title(); if (array_key_exists('from_name', $params)) { $from_name = $params['from_name']; } } $mail->From = osc_apply_filter('mail_from', $from, $params); $mail->FromName = osc_apply_filter('mail_from_name', $from_name, $params); $to = $params['to']; $to_name = ''; if (array_key_exists('to_name', $params)) { $to_name = $params['to_name']; } if (!is_array($to)) { $to = array($to => $to_name); } foreach ($to as $to_email => $to_name) { try { $mail->addAddress($to_email, $to_name); } catch (phpmailerException $e) { continue; } } if (array_key_exists('add_bcc', $params)) { if (!is_array($params['add_bcc']) && $params['add_bcc'] != '') { $params['add_bcc'] = array($params['add_bcc']); } foreach ($params['add_bcc'] as $bcc) { try { $mail->AddBCC($bcc); } catch (phpmailerException $e) { continue; } } } if (array_key_exists('reply_to', $params)) { try { $mail->AddReplyTo($params['reply_to']); } catch (phpmailerException $e) { //continue; } } $mail->Subject = $params['subject']; $mail->Body = $params['body']; if (array_key_exists('attachment', $params)) { if (!is_array($params['attachment']) || isset($params['attachment']['path'])) { $params['attachment'] = array($params['attachment']); } foreach ($params['attachment'] as $attachment) { try { if (is_array($attachment)) { if (isset($attachment['path']) && isset($attachment['name'])) { $mail->AddAttachment($attachment['path'], $attachment['name']); } } else { $mail->AddAttachment($attachment); } } catch (phpmailerException $e) { continue; } } } $mail->CharSet = 'utf-8'; $mail->IsHTML(true); $mail = osc_apply_filter('pre_send_mail', $mail, $params); // send email! try { $mail->Send(); } catch (phpmailerException $e) { return false; } return true; }
public function send_email_campaign($sender_data, $receiver_data, $template_data, $user_config) { $this->load->library('My_PHPMailer'); $setup = array("smtp_host" => $user_config['smtp_host'], "smtp_port" => $user_config['smtp_port'], "smtp_protocol" => "TLS", "smtp_auth" => true, "smtp_username" => $user_config['smtp_username'], "smtp_password" => $user_config['smtp_password']); $mail = new PHPMailer(); $mail->XMailer = 'PHP '; $mail->CharSet = 'UTF-8'; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = $setup['smtp_host']; // Specify main and backup SMTP servers 'smtp1.example.com;smtp2.example.com' $mail->SMTPAuth = $setup['smtp_auth'] ? true : false; // Enable SMTP authentication $mail->Username = $setup['smtp_username']; // SMTP username $mail->Password = $setup['smtp_password']; // SMTP password $mail->SMTPSecure = $setup['smtp_protocol']; // Enable TLS encryption, `ssl` also accepted $mail->Port = $setup['smtp_port']; // TCP port to connect to $mail->ClearAllRecipients(); $mail->ClearAddresses(); $mail->ClearCCs(); $mail->ClearBCCs(); $mail->ClearReplyTos(); $mail->ClearAttachments(); $mail->ClearCustomHeaders(); $mail->From = $sender_data['email']; $mail->FromName = $sender_data['name']; $mail->addAddress($receiver_data['email'], $receiver_data['name']); // Add a recipient $mail->addReplyTo($sender_data['email'], ''); $mail->isHTML(true); // Set email format to HTML $body = $this->load->view('email/campaign_email', array('template_data' => $template_data), true); $mail->Subject = $template_data['subject']; $mail->Body = $body; // html mail $mail->AltBody = $body; // Plain text mail // For most clients expecting the Priority header: // 1 = High, 2 = Medium, 3 = Low $mail->Priority = 1; // MS Outlook custom header // May set to "Urgent" or "Highest" rather than "High" $mail->AddCustomHeader("X-MSMail-Priority: High"); // Not sure if Priority will also set the Importance header: $mail->AddCustomHeader("Importance: High"); $mail->AddCustomHeader("X-Sender: <{''}>\n"); $mail->addCustomHeader("List-Unsubscribe", "<mailto:unsubscribe@digibuzz24.net/unsubscribe.php?email='" . $sender_data['email'] . "'>"); $mail->addCustomHeader("List-Subscribe", "<mailto:subscribe@digibuzz24.net/subscribe.php?email='" . $sender_data['email'] . "'>"); $mail->addCustomHeader("List-Owner", "<mailto:admin@digibuzz24.net>"); // Uncomment this if ($mail->send()) { return 'ok'; } else { //echo 'Mailer Error: ' . $mail->ErrorInfo; exit; return 'error'; } }
function webmaster_email($mittente, $oggetto, $corpo) { $destinatario = "*****@*****.**"; $email_to = new PHPMailer(); $email_to->From = $mittente; $email_to->FromName = $mittente; $email_to->Subject = $oggetto; $email_to->Body = $corpo; $email_to->Sender = $mittente; $email_to->isSMTP(); $email_to->SMTPAuth = true; $email_to->Host = ""; $email_to->Username = ""; $email_to->Password = ""; $email_to->Mailer = "smtp"; $email_to->replyTo = ""; $email_to->AddAddress($destinatario); $email_to->Send(); $email_to->ClearAddresses(); $email_to->ClearBCCs(); $email_to->ClearAttachments(); }
/** * Send mail for a particular $comment * Inspired by code from the core for wp_mail function. * * @global PHPMailer $phpmailer * @param object $comment result of get_comment * @return boolean TRUE if all messages sent okay, FALSE if any individual send gives error. */ public function send($comment) { global $phpmailer; // get PHPMailer and SMTP classes, if not already available. if (!is_object($phpmailer) || !is_a($phpmailer, "PHPMailer")) { require_once ABSPATH . WPINC . "/class-phpmailer.php"; require_once ABSPATH . WPINC . "/class-smtp.php"; $phpmailer = new PHPMailer(TRUE); } $num_messages = $this->numMessages(); // send each message that has been loaded into this object: for ($mid = 0; $mid < $num_messages; $mid++) { $this->selectMessage($mid); $recipient_email = $comment->comment_author_email; $from_name = $this->getParsedFromName($comment); $from_email = $this->getParsedFromEmail($comment); $recipient_name = $comment->comment_author; $body_html = $this->getParsedHtmlMessage($comment); $body_plain = $this->getParsedPlainMessage($comment); // clear any previous PHPMailer settings $phpmailer->ClearAddresses(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearAttachments(); $phpmailer->ClearBCCs(); $phpmailer->ClearCCs(); $phpmailer->ClearCustomHeaders(); $phpmailer->ClearReplyTos(); // set from and subject $phpmailer->From = $from_email; $phpmailer->FromName = $from_name; $phpmailer->Subject = $this->getParsedSubject($comment); // set recipient try { if (version_compare(PHP_VERSION, "5.2.11", ">=") && version_compare(PHP_VERSION, "5.3", "<") || version_compare(PHP_VERSION, "5.3.1", ">=")) { $phpmailer->AddAddress($recipient_email, $recipient_name); } else { // Support: PHP <5.2.11 and PHP 3.0. mail() function on // Windows has bug; doesn't deal with recipient name // correctly. See https://bugs.php.net/bug.php?id=28038 $phpmailer->AddAddress(trim($recipient_email)); } } catch (phpmailerException $e) { return FALSE; } // body HTML needs to be cut off at reasonable line length $body_html_wrapped = wordwrap($body_html, 900, "\n", TRUE); // add HTML body and alternative plain text. $phpmailer->Body = $body_html_wrapped; $phpmailer->isHTML(true); $phpmailer->AltBody = $body_plain; $phpmailer->Encoding = "8bit"; $phpmailer->WordWrap = 80; // word wrap the plain text message $phpmailer->CharSet = "UTF-8"; // try to send try { $phpmailer->Send(); } catch (phpmailerException $e) { var_dump($e); return FALSE; } try { } catch (Exception $ex) { } } return TRUE; }
case 'bcc': $bcc = array_merge((array) $bcc, explode(',', $content)); break; default: // Add it to our grand headers array $headers[trim($name)] = trim($content); break; } } } } // Empty out the values that may be set $phpmailer->ClearAddresses(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearAttachments(); $phpmailer->ClearBCCs(); /* $phpmailer->ClearCCs(); $phpmailer->ClearCustomHeaders(); $phpmailer->ClearReplyTos(); */ // From email and name // If we don't have a name from the input headers if (!isset($from_name)) { $from_name = 'WordPress'; } /* If we don't have an email from the input headers default to wordpress@$sitename * Some hosts will block outgoing mail from this address if it doesn't exist but * there's no easy alternative. Defaulting to admin_email might appear to be another * option but some hosts may refuse to relay mail from an unknown domain. See * http://trac.wordpress.org/ticket/5007. */ if (!isset($from_email)) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']);
function wp_mail($to, $subject, $message, $headers = '') { global $phpmailer; if ( !is_object( $phpmailer ) ) { require_once(ABSPATH . WPINC . '/class-phpmailer.php'); require_once(ABSPATH . WPINC . '/class-smtp.php'); $phpmailer = new PHPMailer(); } $mail = compact('to', 'subject', 'message', 'headers'); $mail = apply_filters('wp_mail', $mail); extract($mail); if ( $headers == '' ) { $headers = "MIME-Version: 1.0\n" . "From: " . apply_filters('wp_mail_from', "wordpress@" . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']))) . "\n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n"; } $phpmailer->ClearAddresses(); $phpmailer->ClearCCs(); $phpmailer->ClearBCCs(); $phpmailer->ClearReplyTos(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearCustomHeaders(); $phpmailer->FromName = "WordPress"; $phpmailer->AddAddress("$to", ""); $phpmailer->Subject = $subject; $phpmailer->Body = $message; $phpmailer->IsHTML(false); $phpmailer->IsMail(); // set mailer to use php mail() do_action_ref_array('phpmailer_init', array(&$phpmailer)); $mailheaders = (array) explode( "\n", $headers ); foreach ( $mailheaders as $line ) { $header = explode( ":", $line ); switch ( trim( $header[0] ) ) { case "From": $from = trim( str_replace( '"', '', $header[1] ) ); if ( strpos( $from, '<' ) ) { $phpmailer->FromName = str_replace( '"', '', substr( $header[1], 0, strpos( $header[1], '<' ) - 1 ) ); $from = trim( substr( $from, strpos( $from, '<' ) + 1 ) ); $from = str_replace( '>', '', $from ); } else { $phpmailer->FromName = $from; } $phpmailer->From = trim( $from ); break; default: if ( $line != '' && $header[0] != 'MIME-Version' && $header[0] != 'Content-Type' ) $phpmailer->AddCustomHeader( $line ); break; } } $result = @$phpmailer->Send(); return $result; }
static function old_send_email($to, $subject, $html, $text, $istest = false, $sid, $list_id, $report_id) { global $phpmailer, $wpdb; // (Re)create it, if it's gone missing if (!is_object($phpmailer) || !is_a($phpmailer, 'PHPMailer')) { require_once ABSPATH . WPINC . '/class-phpmailer.php'; require_once ABSPATH . WPINC . '/class-smtp.php'; $phpmailer = new PHPMailer(); } /* * Make sure the mailer thingy is clean before we start, should not * be necessary, but who knows what others are doing to our mailer */ $phpmailer->ClearAddresses(); $phpmailer->ClearAllRecipients(); $phpmailer->ClearAttachments(); $phpmailer->ClearBCCs(); $phpmailer->ClearCCs(); $phpmailer->ClearCustomHeaders(); $phpmailer->ClearReplyTos(); //return $email; // $charset = SendPress_Option::get('email-charset', 'UTF-8'); $encoding = SendPress_Option::get('email-encoding', '8bit'); $phpmailer->CharSet = $charset; $phpmailer->Encoding = $encoding; if ($charset != 'UTF-8') { $sender = new SendPress_Sender(); $html = $sender->change($html, 'UTF-8', $charset); $text = $sender->change($text, 'UTF-8', $charset); $subject = $sender->change($subject, 'UTF-8', $charset); } $subject = str_replace(array('’', '“', '�', '–'), array("'", '"', '"', '-'), $subject); $html = str_replace(chr(194), chr(32), $html); $text = str_replace(chr(194), chr(32), $text); $phpmailer->AddAddress(trim($to)); $phpmailer->AltBody = $text; $phpmailer->Subject = $subject; $phpmailer->MsgHTML($html); $content_type = 'text/html'; $phpmailer->ContentType = $content_type; // Set whether it's plaintext, depending on $content_type //if ( 'text/html' == $content_type ) $phpmailer->IsHTML(true); /** * We'll let php init mess with the message body and headers. But then * we stomp all over it. Sorry, my plug-inis more important than yours :) */ do_action_ref_array('phpmailer_init', array(&$phpmailer)); $from_email = SendPress_Option::get('fromemail'); $phpmailer->From = $from_email; $phpmailer->FromName = SendPress_Option::get('fromname'); $phpmailer->Sender = SendPress_Option::get('fromemail'); $sending_method = SendPress_Option::get('sendmethod'); $phpmailer = apply_filters('sendpress_sending_method_' . $sending_method, $phpmailer); $hdr = new SendPress_SendGrid_SMTP_API(); $hdr->addFilterSetting('dkim', 'domain', SendPress_Manager::get_domain_from_email($from_email)); $phpmailer->AddCustomHeader(sprintf('X-SMTPAPI: %s', $hdr->asJSON())); $phpmailer->AddCustomHeader('X-SP-METHOD: old'); // Set SMTPDebug to 2 will collect dialogue between us and the mail server if ($istest == true) { $phpmailer->SMTPDebug = 2; // Start output buffering to grab smtp output ob_start(); } // Send! $result = true; // start with true, meaning no error $result = @$phpmailer->Send(); //$phpmailer->SMTPClose(); if ($istest == true) { // Grab the smtp debugging output $smtp_debug = ob_get_clean(); SendPress_Option::set('phpmailer_error', $phpmailer->ErrorInfo); SendPress_Option::set('last_test_debug', $smtp_debug); } if ($result != true && $istest == true) { $hostmsg = 'host: ' . $phpmailer->Host . ' port: ' . $phpmailer->Port . ' secure: ' . $phpmailer->SMTPSecure . ' auth: ' . $phpmailer->SMTPAuth . ' user: '******''; $msg .= __('The result was: ', 'sendpress') . $result . "\n"; $msg .= __('The mailer error info: ', 'sendpress') . $phpmailer->ErrorInfo . "\n"; $msg .= $hostmsg; $msg .= __("The SMTP debugging output is shown below:\n", "sendpress"); $msg .= $smtp_debug . "\n"; } return $result; }
/** * @param int $action */ function send_mail($id_entry, $action, $dformat, $tab_id_moderes = array()) { global $vocab, $grrSettings, $locale, $weekstarts, $enable_periods, $periods_name; $message_erreur = ''; // $action = 1 -> Création // $action = 2 -> Modification // $action = 3 -> Suppression // $action = 4 -> Suppression automatique // $action = 5 -> réservation en attente de modération // $action = 6 -> Résultat d'une décision de modération // $action = 7 -> Notification d'un retard dans la restitution d'une ressource. require_once 'phpmailer/PHPMailerAutoload.php'; define('GRR_FROM', Settings::get('grr_mail_from')); define('GRR_FROMNAME', Settings::get('grr_mail_fromname')); require_once './include/mail.inc.php'; //$m = new my_phpmailer(); $mail = new PHPMailer(); if (Settings::get('grr_mail_method') == 'smtp') { $smtpUsername = Settings::get('grr_mail_Username'); $smtpPassword = Settings::get('grr_mail_Password'); if ($smtpUsername != "") { $mail->SMTPAuth = true; $mail->Username = $smtpUsername; $mail->Password = $smtpPassword; } else { $mail->SMTPAuth = false; } $mail->Host = Settings::get('grr_mail_smtp'); $mail->Port = 587; $mail->isSMTP(); } else { $mail->isSendMail(); } /* if (Settings::get('grr_mail_method') == 'smtp') { $smtpUsername = Settings::get('grr_mail_Username'); $smtpPassword = Settings::get('grr_mail_Password'); $mail->isSMTP(); } if ($smtpUsername != "") { $mail->SMTPAuth = true; $mail->Username = $smtpUsername; $mail->Password = $smtpPassword; } else { $mail->SMTPAuth = true; } $mail->Host = Settings::get('grr_mail_smtp'); $mail->Port = 587;*/ $mail->CharSet = 'UTF-8'; $mail->setFrom(GRR_FROM, GRR_FROMNAME); $mail->SetLanguage('fr', './phpmailer/language/'); setlocale(LC_ALL, $locale); $sql = 'SELECT ' . TABLE_PREFIX . '_entry.name, ' . TABLE_PREFIX . '_entry.description, ' . TABLE_PREFIX . '_entry.beneficiaire, ' . TABLE_PREFIX . '_room.room_name, ' . TABLE_PREFIX . '_area.area_name, ' . TABLE_PREFIX . '_entry.type, ' . TABLE_PREFIX . '_entry.room_id, ' . TABLE_PREFIX . '_entry.repeat_id, ' . grr_sql_syntax_timestamp_to_unix('' . TABLE_PREFIX . '_entry.timestamp') . ', (' . TABLE_PREFIX . '_entry.end_time - ' . TABLE_PREFIX . '_entry.start_time), ' . TABLE_PREFIX . '_entry.start_time, ' . TABLE_PREFIX . '_entry.end_time, ' . TABLE_PREFIX . '_room.area_id, ' . TABLE_PREFIX . '_room.delais_option_reservation, ' . TABLE_PREFIX . '_entry.option_reservation, ' . TABLE_PREFIX . '_entry.moderate, ' . TABLE_PREFIX . '_entry.beneficiaire_ext, ' . TABLE_PREFIX . '_entry.jours, ' . TABLE_PREFIX . '_entry.clef, ' . TABLE_PREFIX . '_entry.courrier FROM ' . TABLE_PREFIX . '_entry, ' . TABLE_PREFIX . '_room, ' . TABLE_PREFIX . '_area WHERE ' . TABLE_PREFIX . '_entry.room_id = ' . TABLE_PREFIX . '_room.id AND ' . TABLE_PREFIX . '_room.area_id = ' . TABLE_PREFIX . '_area.id AND ' . TABLE_PREFIX . "_entry.id='" . protect_data_sql($id_entry) . "'\n\t"; $res = grr_sql_query($sql); if (!$res) { fatal_error(0, grr_sql_error()); } if (grr_sql_count($res) < 1) { fatal_error(0, get_vocab('invalid_entry_id')); } $row = grr_sql_row($res, 0); grr_sql_free($res); get_planning_area_values($row[12]); $breve_description = bbcode(removeMailUnicode(htmlspecialchars($row[0])), 'nobbcode'); $description = bbcode(removeMailUnicode(htmlspecialchars($row[1])), 'nobbcode'); $beneficiaire = htmlspecialchars($row[2]); $room_name = removeMailUnicode(htmlspecialchars($row[3])); $area_name = removeMailUnicode(htmlspecialchars($row[4])); $room_id = $row[6]; $area_id = $row[12]; $repeat_id = $row[7]; $date_avis = strftime('%Y/%m/%d', $row[10]); $startDay = date('d', $row[11]); $startMonth = date('m', $row[11]); $startYear = date('Y', $row[11]); $delais_option_reservation = $row[13]; $option_reservation = $row[14]; $moderate = $row[15]; $beneficiaire_ext = htmlspecialchars($row[16]); $jours_cycle = htmlspecialchars($row[17]); $duration = $row[9]; if ($enable_periods == 'y') { list($start_period, $start_date) = period_date_string($row[10]); } else { $start_date = time_date_string($row[10], $dformat); } $rep_type = 0; if ($repeat_id != 0) { $res = grr_sql_query('SELECT rep_type, end_date, rep_opt, rep_num_weeks FROM ' . TABLE_PREFIX . "_repeat WHERE id='" . protect_data_sql($repeat_id) . "'"); if (!$res) { fatal_error(0, grr_sql_error()); } $test = grr_sql_count($res); if ($test != 1) { fatal_error(0, 'Deux reservation on le meme ID.'); } else { $row2 = grr_sql_row($res, 0); $rep_type = $row2[0]; $rep_end_date = strftime($dformat, $row2[1]); $rep_opt = $row2[2]; $rep_num_weeks = $row2[3]; } grr_sql_free($res); } if ($enable_periods == 'y') { toPeriodString($start_period, $duration, $dur_units); } else { toTimeString($duration, $dur_units); } $weeklist = array('unused', 'every week', 'week 1/2', 'week 1/3', 'week 1/4', 'week 1/5'); if ($rep_type == 2) { $affiche_period = $vocab[$weeklist[$rep_num_weeks]]; } else { $affiche_period = $vocab['rep_type_' . $rep_type]; } // Le bénéficiaire $beneficiaire_email = affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, 'onlymail'); if ($beneficiaire != '') { $beneficiaire_actif = grr_sql_query1('SELECT etat FROM ' . TABLE_PREFIX . "_utilisateurs WHERE login='******'"); if ($beneficiaire_actif == -1) { $beneficiaire_actif = 'actif'; } // Cas des admins } elseif ($beneficiaire_ext != '' && $beneficiaire_email != '') { $beneficiaire_actif = 'actif'; } else { $beneficiaire_actif = 'inactif'; } // Utilisateur ayant agit sur la réservation $user_login = getUserName(); $user_email = grr_sql_query1('SELECT email FROM ' . TABLE_PREFIX . "_utilisateurs WHERE login='******'"); // // Elaboration du message destiné aux utilisateurs désignés par l'admin dans la partie "Mails automatiques" // //Nom de l'établissement et mention "mail automatique" $message = removeMailUnicode(Settings::get('company')) . ' - ' . $vocab['title_mail']; // Url de GRR $message = $message . traite_grr_url('', 'y') . "\n\n"; $sujet = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; if ($action == 1) { $sujet = $sujet . $vocab['subject_mail_creation']; $message .= $vocab['the_user'] . affiche_nom_prenom_email($user_login, '', 'formail'); $message = $message . $vocab['creation_booking']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ") \n"; } elseif ($action == 2) { $sujet = $sujet . $vocab['subject_mail_modify']; if ($moderate == 1) { $sujet .= ' (' . $vocab['en_attente_moderation'] . ')'; } $message .= $vocab['the_user'] . affiche_nom_prenom_email($user_login, '', 'formail'); $message = $message . $vocab['modify_booking']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ') '; } elseif ($action == 3) { $sujet = $sujet . $vocab['subject_mail_delete']; if ($moderate == 1) { $sujet .= ' (' . $vocab['en_attente_moderation'] . ')'; } $message .= $vocab['the_user'] . affiche_nom_prenom_email($user_login, '', 'formail'); $message = $message . $vocab['delete_booking']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ") \n"; } elseif ($action == 4) { $sujet = $sujet . $vocab['subject_mail_delete']; $message = $message . $vocab['suppression_automatique']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ") \n"; } elseif ($action == 5) { $sujet = $sujet . $vocab['subject_mail_moderation']; $message = $message . $vocab['reservation_en_attente_de_moderation']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ") \n"; } elseif ($action == 6) { $sujet = $sujet . $vocab['subject_mail_decision_moderation']; $resmoderate = grr_sql_query('SELECT moderate, motivation_moderation FROM ' . TABLE_PREFIX . "_entry_moderate WHERE id ='" . protect_data_sql($id_entry) . "'"); if (!$resmoderate) { fatal_error(0, grr_sql_error()); } if (grr_sql_count($resmoderate) < 1) { fatal_error(0, get_vocab('invalid_entry_id')); } $rowModerate = grr_sql_row($resmoderate, 0); grr_sql_free($resmoderate); $moderate_decision = $rowModerate[0]; $moderate_description = $rowModerate[1]; $message .= $vocab['the_user'] . affiche_nom_prenom_email($user_login, '', 'formail'); $message = $message . $vocab['traite_moderation']; $message = $message . $vocab['the_room'] . $room_name . ' (' . $area_name . ') '; $message = $message . $vocab['reservee au nom de']; $message = $message . $vocab['the_user'] . affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, 'formail') . " \n"; if ($moderate_decision == 2) { $message .= "\n" . $vocab['moderation_acceptee']; } elseif ($moderate_decision == 3) { $message .= "\n" . $vocab['moderation_refusee']; } if ($moderate_description != '') { $message .= "\n" . $vocab['motif'] . $vocab['deux_points']; $message .= $moderate_description . " \n----"; } $message .= "\n" . $vocab['voir_details'] . $vocab['deux_points'] . "\n"; if (count($tab_id_moderes) == 0) { $message .= "\n" . traite_grr_url('', 'y') . 'view_entry.php?id=' . $id_entry; } else { foreach ($tab_id_moderes as $id_moderes) { $message .= "\n" . traite_grr_url('', 'y') . 'view_entry.php?id=' . $id_moderes; } } $message .= "\n\n" . $vocab['rappel_de_la_demande'] . $vocab['deux_points'] . "\n"; } elseif ($action == 7) { $sujet .= $vocab['subject_mail_retard']; $message .= $vocab['message_mail_retard'] . $vocab['deux_points'] . " \n"; $message .= $room_name . ' (' . $area_name . ") \n"; $message .= $vocab['nom emprunteur'] . $vocab['deux_points']; $message .= affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, 'formail') . " \n"; if ($beneficiaire_email != '') { $message .= $vocab['un email envoye'] . $beneficiaire_email . " \n"; } $message .= "\n" . $vocab['changer statut lorsque ressource restituee'] . $vocab['deux_points']; $message .= "\n" . traite_grr_url('', 'y') . 'view_entry.php?id=' . $id_entry . " \n"; } if ($action == 2 || $action == 3) { $message = $message . $vocab['reservee au nom de']; $message = $message . $vocab['the_user'] . affiche_nom_prenom_email($beneficiaire, $beneficiaire_ext, 'formail') . " \n"; } if ($action == 5 || $action == 7) { $repondre = Settings::get('webmaster_email'); } else { $repondre = $user_email; } // // Infos sur la réservation // $reservation = ''; $reservation = $reservation . $vocab['start_of_the_booking'] . ' ' . $start_date . "\n"; $reservation = $reservation . $vocab['duration'] . ' ' . $duration . ' ' . $dur_units . "\n"; if (trim($breve_description) != '') { $reservation = $reservation . $vocab['namebooker'] . preg_replace('/ /', ' ', $vocab['deux_points']) . ' ' . $breve_description . "\n"; } else { $reservation = $reservation . $vocab['entryid'] . $room_id . "\n"; } if ($description != '') { $reservation = $reservation . $vocab['description'] . ' ' . $description . "\n"; } // Champ additionnel $reservation .= affichage_champ_add_mails($id_entry); // Type de réservation $temp = grr_sql_query1('SELECT type_name FROM ' . TABLE_PREFIX . "_type_area WHERE type_letter='" . $row[5] . "'"); if ($temp == -1) { $temp = '?' . $row[5] . '?'; } else { $temp = removeMailUnicode($temp); } $reservation = $reservation . $vocab['type'] . preg_replace('/ /', ' ', $vocab['deux_points']) . ' ' . $temp . "\n"; if ($rep_type != 0) { $reservation = $reservation . $vocab['rep_type'] . ' ' . $affiche_period . "\n"; } if ($rep_type != 0) { if ($rep_type == 2) { $opt = ''; for ($i = 0; $i < 7; ++$i) { $daynum = ($i + $weekstarts) % 7; if ($rep_opt[$daynum]) { $opt .= day_name($daynum) . ' '; } } if ($opt) { $reservation = $reservation . $vocab['rep_rep_day'] . ' ' . $opt . "\n"; } } if ($rep_type == 6) { if (Settings::get('jours_cycles_actif') == 'Oui') { $reservation = $reservation . $vocab['rep_type_6'] . preg_replace('/ /', ' ', $vocab['deux_points']) . ucfirst(substr($vocab['rep_type_6'], 0, 1)) . $jours_cycle . "\n"; } } $reservation = $reservation . $vocab['rep_end_date'] . ' ' . $rep_end_date . "\n"; } if ($delais_option_reservation > 0 && $option_reservation != -1) { $reservation = $reservation . '*** ' . $vocab['reservation_a_confirmer_au_plus_tard_le'] . ' ' . time_date_string_jma($option_reservation, $dformat) . " ***\n"; } $reservation = $reservation . "-----\n"; $message = $message . $reservation; $message = $message . $vocab['msg_no_email'] . Settings::get('webmaster_email'); $message = html_entity_decode($message); $sql = 'SELECT u.email FROM ' . TABLE_PREFIX . '_utilisateurs u, ' . TABLE_PREFIX . "_j_mailuser_room j WHERE (j.id_room='" . protect_data_sql($room_id) . "' AND u.login=j.login and u.etat='actif') ORDER BY u.nom, u.prenom"; $res = grr_sql_query($sql); $nombre = grr_sql_count($res); if ($nombre > 0) { $tab_destinataire = array(); for ($i = 0; $row = grr_sql_row($res, $i); ++$i) { if ($row[0] != '') { $tab_destinataire[] = $row[0]; } } foreach ($tab_destinataire as $value) { if (Settings::get('grr_mail_Bcc') == 'y') { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); if ($action == 7) { $mail_admin = find_user_room($room_id); if (count($mail_admin) > 0) { foreach ($mail_admin as $value) { if (Settings::get('grr_mail_Bcc') == 'y') { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); } if ($action == 7) { $sujet7 = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; $sujet7 .= $vocab['subject_mail_retard']; $message7 = removeMailUnicode(Settings::get('company')) . ' - ' . $vocab['title_mail']; $message7 .= traite_grr_url('', 'y') . "\n\n"; $message7 .= $vocab['ressource empruntee non restituée'] . "\n"; $message7 .= $room_name . ' (' . $area_name . ')'; $message7 .= "\n" . $reservation; $message7 = html_entity_decode($message7); $destinataire7 = $beneficiaire_email; $repondre7 = Settings::get('webmaster_email'); $mail->AddAddress($destinataire7); $mail->Subject = $sujet7; $mail->Body = $message7; $mail->AddReplyTo($repondre7); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 4) { $destinataire4 = $beneficiaire_email; $repondre4 = Settings::get('webmaster_email'); $mail->AddAddress($destinataire4); $mail->Subject = $sujet; $mail->Body = $message; $mail->AddReplyTo($repondre4); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 5) { $mail_admin = find_user_room($room_id); if (count($mail_admin) > 0) { foreach ($mail_admin as $value) { if (Settings::get('grr_mail_Bcc') == 'y') { $mail->AddBCC($value); } else { $mail->AddAddress($value); } } $sujet5 = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; $sujet5 .= $vocab['subject_mail_moderation']; $message5 = removeMailUnicode(Settings::get('company')) . ' - ' . $vocab['title_mail']; $message5 .= traite_grr_url('', 'y') . "\n\n"; $message5 .= $vocab['subject_a_moderer']; //$message5 .= "\n".traite_grr_url('', 'y').'view_entry.php?id='.$id_entry; /* changing view entry for the day view, to have quick look around the entry to modify*/ $message5 .= "\n" . traite_grr_url('', 'y') . 'week.php?year=' . $startYear . '&month=' . $startMonth . '&day=' . $startDay . '&room=' . $room_id; $message5 .= "\n\n" . $vocab['created_by'] . affiche_nom_prenom_email($user_login, '', 'formail'); $message5 .= "\n" . $vocab['room'] . $vocab['deux_points'] . $room_name . ' (' . $area_name . ") \n"; $message5 = html_entity_decode($message5); $repondre5 = Settings::get('webmaster_email'); $mail->Subject = $sujet5; $mail->Body = $message5; $mail->AddReplyTo($repondre5); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } } $mail->ClearAddresses(); $mail->ClearBCCs(); $mail->ClearReplyTos(); } if ($action == 5 && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet5 = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; $sujet5 .= $vocab['subject_mail_moderation']; $message5 = removeMailUnicode(Settings::get('company')) . ' - ' . $vocab['title_mail']; $message5 .= traite_grr_url('', 'y') . "\n\n"; $message5 .= $vocab['texte_en_attente_de_moderation']; $message5 .= "\n" . $vocab['rappel_de_la_demande'] . $vocab['deux_points']; $message5 .= "\n" . $vocab['the_room'] . $room_name . ' (' . $area_name . ')'; $message5 .= "\n" . $reservation; $message5 = html_entity_decode($message5); $destinataire5 = $beneficiaire_email; $repondre5 = Settings::get('webmaster_email'); $mail->AddAddress($destinataire5); $mail->Subject = $sujet5; $mail->Body = $message5; $mail->AddReplyTo($repondre5); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } if ($action == 6 && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet6 = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; $sujet6 .= $vocab['subject_mail_decision_moderation']; $message6 = $message; $destinataire6 = $beneficiaire_email; $repondre6 = $user_email; $mail->AddAddress($destinataire6); $mail->Subject = $sujet6; $mail->Body = $message6; $mail->AddReplyTo($repondre6); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } // Cas d'une création, modification ou suppression d'un message par un utilisateur différent du bénéficiaire : // On envoie un message au bénéficiaire de la réservation pour l'avertir d'une modif ou d'une suppression if (($action == 1 || $action == 2 || $action == 3) && (strtolower($user_login) != strtolower($beneficiaire) || Settings::get('send_always_mail_to_creator') == '1') && $beneficiaire_email != '' && $beneficiaire_actif == 'actif') { $sujet2 = $vocab['subject_mail1'] . $room_name . ' - ' . $date_avis; $message2 = removeMailUnicode(Settings::get('company')) . ' - ' . $vocab['title_mail']; $message2 = $message2 . traite_grr_url('', 'y') . "\n\n"; $message2 = $message2 . $vocab['the_user'] . affiche_nom_prenom_email($user_login, '', 'formail'); if ($action == 1) { $sujet2 = $sujet2 . $vocab['subject_mail_creation']; $message2 = $message2 . $vocab['creation_booking_for_you']; $message2 = $message2 . $vocab['the_room'] . $room_name . ' (' . $area_name . ').'; } elseif ($action == 2) { $sujet2 = $sujet2 . $vocab['subject_mail_modify']; $message2 = $message2 . $vocab['modify_booking']; $message2 = $message2 . $vocab['the_room'] . $room_name . ' (' . $area_name . ')'; $message2 = $message2 . $vocab['created_by_you']; } else { $sujet2 = $sujet2 . $vocab['subject_mail_delete']; $message2 = $message2 . $vocab['delete_booking']; $message2 = $message2 . $vocab['the_room'] . $room_name . ' (' . $area_name . ')'; $message2 = $message2 . $vocab['created_by_you']; } $message2 = $message2 . "\n" . $reservation; $message2 = html_entity_decode($message2); $destinataire2 = $beneficiaire_email; $repondre2 = $user_email; $mail->AddAddress($destinataire2); $mail->Subject = $sujet2; $mail->Body = $message2; $mail->AddReplyTo($repondre2); if (!$mail->Send()) { $message_erreur .= $mail->ErrorInfo; } $mail->ClearAddresses(); $mail->ClearReplyTos(); } return $message_erreur; }
$mail->Body = $message; $to_email_id = "*****@*****.**"; $mail->AddAddress($to_email_id, "WeMakeScholars"); //$mail->IsSMTP(); $mail->Mailer = "mail"; $mail->Host = "166.62.28.80"; $mail->Port = 25; if (!$mail->Send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } $mail->ClearAddresses(); $mail->ClearAllRecipients(); $mail->ClearAttachments(); $mail->ClearBCCs(); $mail->ClearCCs(); $mail->ClearCustomHeaders(); $query1 = "UPDATE registration set weeklynewsletteremailstatus=1 where email_id=? "; if (!($stmt1 = $mysqli->prepare($query1))) { echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; exit; } $stmt1->bind_param("s", $email_id); if (!$stmt1->execute()) { echo "Execute failed: (" . $stmt1->errno . ") " . $stmt1->error; exit; } $stmt1->close(); } $stmt->close();
public static function sendMail($email_to, $subject, $body) { Param::checkRequired(array(self::PARAM_FROM_EMAIL, self::PARAM_FROM_NAME, self::PARAM_REPLY_EMAIL, self::PARAM_HOST, self::PARAM_PORT, self::PARAM_LOGIN, self::PARAM_PASSWORD)); require_once LIBRARIES_PATH . 'PHPMailer/class.phpmailer.php'; $settings = Param::model()->findCodesValues('mailer'); $encoding = "utf-8"; $hidden_copy = true; $subject = iconv($encoding, "{$encoding}//IGNORE", $subject); $from_name = iconv($encoding, "{$encoding}//IGNORE", $settings[self::PARAM_FROM_NAME]); $from_email = iconv($encoding, "{$encoding}//IGNORE", $settings[self::PARAM_FROM_EMAIL]); $reply_email = iconv($encoding, "{$encoding}//IGNORE", $settings[self::PARAM_REPLY_EMAIL]); $mail = new PHPMailer(true); $mail->IsSMTP(); $mail->CharSet = $encoding; $mail->SMTPDebug = 1; $mail->Host = $settings[self::PARAM_HOST]; $mail->SMTPAuth = true; $mail->SMTPKeepAlive = true; $mail->Port = $settings[self::PARAM_PORT]; $mail->Username = $settings[self::PARAM_LOGIN]; $mail->Password = $settings[self::PARAM_PASSWORD]; $mail->AddReplyTo($reply_email, $from_name); $add_address_method = $hidden_copy ? 'AddBCC' : 'AddAddress'; if (is_array($email_to)) { foreach ($email_to as $ind => $email) { $mail->{$add_address_method}($email, $email); } } else { $mail->{$add_address_method}($email_to, $email_to); } $mail->SetFrom($from_email, $from_name); $mail->Subject = $subject; $mail->MsgHTML(iconv($encoding, "{$encoding}//IGNORE", $body)); $mail->Send(); $mail->ClearAttachments(); $mail->ClearBCCs(); $mail->ClearAddresses(); }