function smtp_mail
Search API
7.x smtp.module | smtp_mail($to, $subject, $msg, $bool_html = FALSE, $attachments = array(), $bool_string_attachment = FALSE) |
6.x smtp.module | smtp_mail($to, $subject, $msg, |
5.x smtp.module | smtp_mail($to, $subject, $msg) |
For attachments, the array can be one of two methods:
(1) $arr["full_filename"] => "filename" or (2) $arr['filename'] = "string that makes up atachment"
For method #2, $bool_string_attachment must be set to TRUE.
2 calls to smtp_mail()
- engagements_send_email_or_txt_form_submit in modules/
engagements/ engagements.module - fp_mail in includes/
misc.inc - Send an email. Drop-in replacement for PHP's mail() command, but can use SMTP protocol if enabled.
File
- modules/
smtp/ smtp.module, line 124 - This is the main module file for SMTP, which will let us send emails using SMTP instead of PHP's mail() command.
Code
function smtp_mail($to, $subject, $msg, $bool_html = FALSE, $attachments = array(), $bool_string_attachment = FALSE) {
$system_path = trim($GLOBALS ["fp_system_settings"]["file_system_path"]);
require_once ("$system_path/libraries/PHPMailer/src/Exception.php");
require_once ("$system_path/libraries/PHPMailer/src/PHPMailer.php");
require_once ("$system_path/libraries/PHPMailer/src/SMTP.php");
$msg = trim($msg);
if ($msg == "") {
if (count($attachments) == 0) {
// This is a completely empty message! Don't send anything.
watchdog("smtp", "Not sending email to $to ($subject). No message or attachments.", array(), WATCHDOG_DEBUG);
return FALSE;
}
else {
$msg = " "; // We DO have attachments, so add some spaces so we have a string in the variable.
}
}
$mail = new PHPMailer();
// Settings
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = variable_get('smtp_host', '');
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
// 0 = no output, 1 = errors and messages, 2 = messages only.
$mail->SMTPSecure = variable_get('smtp_secure', ''); // tls, ssl, and none are allowed.
$mail->SMTPAuth = TRUE; // enable SMTP authentication
$mail->Port = variable_get('smtp_port', ''); // set the SMTP port
$mail->Username = variable_get('smtp_username', '');
$mail->Password = variable_get('smtp_password', ''); // SMTP account password example
// Content
//$mail->isHTML(true); // Set email format to HTML
//$mail->Subject = 'Here is the subject';
//$mail->Body = 'This is the HTML message body <b>in bold!</b>';
//$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
// Content
if ($bool_html) {
$mail->isHTML(TRUE);
$mail->msgHTML($msg);
}
else {
$mail->Body = $msg;
}
$mail->Subject = $subject;
$mail->setFrom(variable_get('smtp_from_email_address', 'noreply@yourdomain.com'), variable_get('smtp_from_email_name', 'NoReply - FlightPath'));
// Set a unique MessageID
$temp = explode("@", variable_get('smtp_from_email_address', 'noreply@yourdomain.com'));
$dom = $temp [1];
$mail->MessageID = "<" . mt_rand(1, 9999) . sha1(time() * mt_rand(9, 999)) . sha1($msg) . "@" . $dom . ">";
//Recipients
$temp = explode(',', $to);
foreach ($temp as $line) {
$line = trim($line);
if ($line != "") {
$mail->addAddress($line); // Add a recipient
}
}
//$mail->addAddress('ellen@example.com', 'Ellen Smith'); // Name is optional
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
if (!$bool_string_attachment) {
if (count($attachments) > 0) {
foreach ($attachments as $full_filename => $filename) {
$mail->addAttachment($full_filename, $filename);
}
}
}
else {
// This IS a string attachment
if (count($attachments) > 0) {
foreach ($attachments as $filename => $string) {
$mail->addStringAttachment($string, $filename);
}
}
}
$x = $mail->send();
if (!$x) {
fpm("PHPMailer error: " . $mail->ErrorInfo);
watchdog("smtp", "PHPMailer error: " . $mail->ErrorInfo, array(), WATCHDOG_ERROR);
return FALSE;
}
return TRUE;
}