function send_smtp_email($mail_row) { $to_name = html_ent_to_utf8($mail_row['to_name']); $to_address = $mail_row['to_address']; $from_name = html_ent_to_utf8($mail_row['from_name']); $from_address = $mail_row['from_address']; $subject = html_ent_to_utf8($mail_row['subject']); $message = html_ent_to_utf8($mail_row['message']); $html_message = html_ent_to_utf8($mail_row['html_message']); //$html_message = $mail_row['html_message']; $email_message = new smtp_message_class(); $dir = dirname(__FILE__); $dir = preg_split('%[/\\\\]%', $dir); $blank = array_pop($dir); $dir = implode('/', $dir); if (!class_exists("sasl_client_class")) { require "{$dir}/mail/sasl/sasl.php"; } $email_message->localhost = EMAIL_HOSTNAME; $email_message->smtp_host = EMAIL_SMTP_SERVER; $email_message->smtp_direct_delivery = 0; $email_message->smtp_exclude_address = ""; $email_message->smtp_user = EMAIL_SMTP_USER; $email_message->smtp_realm = ""; $email_message->smtp_password = EMAIL_SMTP_PASS; $email_message->smtp_pop3_auth_host = EMAIL_SMTP_AUTH_HOST; $email_message->smtp_ssl = 0; $email_message->authentication_mechanism = 'USER'; // SASL authentication if (EMAIL_DEBUG_SWITCH == 'YES') { $email_message->smtp_debug = 1; } else { $email_message->smtp_debug = 0; } $email_message->smtp_html_debug = 0; //echo "[$to_address], [$to_name], [$from_address], [$from_name], [$subject], [$message], [$html_messageaz]"; $reply_address = $mail_row['from_address']; $error_delivery_name = SITE_NAME; $error_delivery_address = SITE_CONTACT_EMAIL; //$message="Hello ".strtok($to_name," ").",\n\nThis message is just to let you know that your e-mail sending class is working as expected.\n\nHere's some non-ASCII characters ÁèÎõÜ in the message body to let you see if they are sent properly encoded.\n\nThank you,\n$from_name"; //$email_message=new email_message_class; $email_message->default_charset = 'UTF-8'; $email_message->SetEncodedEmailHeader("To", $to_address, $to_name); $email_message->SetEncodedEmailHeader("From", $from_address, $from_name); $email_message->SetEncodedEmailHeader("Reply-To", $reply_address, $reply_name); /* Set the Return-Path header to define the envelope sender address to which bounced messages are delivered. If you are using Windows, you need to use the smtp_message_class to set the return-path address. */ if (defined("PHP_OS") && strcmp(substr(PHP_OS, 0, 3), "WIN")) { $email_message->SetHeader("Return-Path", $error_delivery_address); } $email_message->SetEncodedEmailHeader("Errors-To", $error_delivery_address, $error_delivery_name); $email_message->SetEncodedHeader("Subject", $subject); if ($html_message == '') { // ONLY TEXT $email_message->AddQuotedPrintableTextPart($email_message->WrapText($message)); } else { $email_message->CreateQuotedPrintableHTMLPart($html_message, "", $html_part); //$text_message="This is an HTML message. Please use an HTML capable mail program to read this message."; $email_message->CreateQuotedPrintableTextPart($email_message->WrapText($message), "", $text_part); $alternative_parts = array($html_part, $text_part); $email_message->AddAlternativeMultipart($alternative_parts); } if ($mail_row[attachments] == 'Y') { add_mail_attachments($email_message, $mail_row); } $error = $email_message->Send(); if (strcmp($error, "")) { //echo "Error: $error\n"; $now = gmdate("Y-m-d H:i:s"); $sql = "UPDATE mail_queue SET status='error', retry_count=retry_count+1, error_msg='" . addslashes($error) . "', `date_stamp`='{$now}' WHERE mail_id=" . $mail_row['mail_id']; //echo $sql; mysql_query($sql) or q_mail_error(mysql_error() . $sql); } else { $now = gmdate("Y-m-d H:i:s"); $sql = "UPDATE mail_queue SET status='sent', `date_stamp`='{$now}' WHERE mail_id=" . $mail_row['mail_id']; mysql_query($sql) or q_mail_error(mysql_error() . $sql); //echo $sql; } //echo "."; }
function JB_send_email($mail_row) { $to_name = JB_html_ent_to_utf8($mail_row['to_name']); $to_address = $mail_row['to_address']; $from_name = JB_html_ent_to_utf8($mail_row['from_name']); $from_address = $mail_row['from_address']; $subject = JB_html_ent_to_utf8($mail_row['subject']); $message = JB_html_ent_to_utf8($mail_row['message']); $html_message = JB_html_ent_to_utf8($mail_row['html_message']); if (JB_USE_MAIL_FUNCTION == 'YES') { $email_message = new email_message_class(); if (JB_EMAIL_DEBUG_SWITCH == 'YES') { echo 'Email Debug: Using the mail() function...<br>'; } } else { // use SMTP $dir = JB_basedirpath(); if (!class_exists("sasl_client_class")) { require_once $dir . "include/lib/mail/sasl/sasl.php"; } $email_message = new smtp_message_class(); $email_message->localhost = JB_EMAIL_HOSTNAME; $email_message->smtp_host = JB_EMAIL_SMTP_SERVER; $email_message->smtp_direct_delivery = 0; $email_message->smtp_exclude_address = ""; $email_message->smtp_user = JB_EMAIL_SMTP_USER; $email_message->smtp_realm = ""; $email_message->smtp_password = JB_EMAIL_SMTP_PASS; if (defined('JB_EMAIL_SMTP_PORT')) { if (!is_numeric(JB_EMAIL_SMTP_PORT)) { $email_message->smtp_port = 25; } else { $email_message->smtp_port = JB_EMAIL_SMTP_PORT; } } $email_message->authentication_mechanism = 'USER'; // SASL authentication if (JB_EMAIL_SMTP_SSL == 'YES') { $email_message->smtp_ssl = 1; } else { $email_message->smtp_ssl = 0; } if (JB_EMAIL_POP_BEFORE_SMTP == 'YES') { $email_message->smtp_pop3_auth_host = JB_EMAIL_SMTP_AUTH_HOST; } else { $email_message->smtp_pop3_auth_host = ""; } if (JB_EMAIL_DEBUG_SWITCH == 'YES') { $email_message->smtp_debug = 1; } else { $email_message->smtp_debug = 0; } $email_message->smtp_html_debug = 0; if (JB_EMAIL_DEBUG_SWITCH == 'YES') { echo 'Email Debug: using SMTP server...<br>'; } } $reply_address = $mail_row['from_address']; $error_delivery_name = JB_SITE_NAME; $error_delivery_address = JB_SITE_CONTACT_EMAIL; JBPLUG_do_callback('set_error_delivery_name', $error_delivery_name); // added in 3.6 JBPLUG_do_callback('set_error_delivery_address', $error_delivery_address); // added in 3.6 $email_message->default_charset = 'UTF-8'; $email_message->SetEncodedEmailHeader("To", $to_address, $to_name); $email_message->SetEncodedEmailHeader("From", $from_address, $from_name); $email_message->SetEncodedEmailHeader("Reply-To", $reply_address, $reply_name); /* Set the Return-Path header to define the envelope sender address to which bounced messages are delivered. If you are using Windows, you need to use the smtp_message_class to set the return-path address. */ // Cannot set in safe-mode or under Windows... if (function_exists("ini_get") && !ini_get("safe_mode") && strpos(strtoupper(PHP_OS), 'WIN') === false) { $email_message->SetHeader("Return-Path", $error_delivery_address); } if (strpos(strtoupper(PHP_OS), 'WIN') !== false) { // windows ini_set('sendmail_from', JB_SITE_CONTACT_EMAIL); } //} if ($mail_row['template_id'] == 5 || $mail_row['template_id'] == 6 || $mail_row['template_id'] == 7 || $mail_row['template_id'] == 8 || $mail_row['template_id'] == 30) { // job alerts, resume alerts, newsletter are bulk mails $email_message->SetHeader("Precedence", 'bulk'); } $email_message->SetEncodedEmailHeader("Errors-To", $error_delivery_address, $error_delivery_name); $email_message->SetEncodedHeader("Subject", $subject); if ($html_message == '') { // ONLY TEXT $email_message->AddQuotedPrintableTextPart($email_message->WrapText($message)); } else { $email_message->CreateQuotedPrintableHTMLPart($html_message, "", $html_part); //$text_message="This is an HTML message. Please use an HTML capable mail program to read this message."; $email_message->CreateQuotedPrintableTextPart($email_message->WrapText($message), "", $text_part); $alternative_parts = array($text_part, $html_part); $email_message->AddAlternativeMultipart($alternative_parts); } if ($mail_row['attachments'] == 'Y') { JB_add_mail_attachments($email_message, $mail_row); } JBPLUG_do_callback('set_mail_message', $email_message); // plugins can do additional operations on the $email_message, added in 3.6 $error = $email_message->Send(); if (strcmp($error, "")) { $now = gmdate("Y-m-d H:i:s"); $sql = "UPDATE mail_queue SET status='error', retry_count=retry_count+1, error_msg='" . jb_escape_sql(addslashes($error)) . "', `date_stamp`='{$now}' WHERE mail_id=" . jb_escape_sql($mail_row['mail_id']); JB_mysql_query($sql) or JB_q_mail_error(mysql_error() . $sql); } else { // note: on some servers (ie GoDaddy, connection to server can be // lost, so re-connect by pinging jb_mysql_ping(); $now = gmdate("Y-m-d H:i:s"); $sql = "UPDATE mail_queue SET status='sent', `date_stamp`='{$now}' WHERE mail_id='" . jb_escape_sql($mail_row['mail_id']) . "'"; JB_mysql_query($sql, $jb_mysql_link) or JB_q_mail_error(mysql_error() . $sql); } }