static function send($from, $toDisplayName, $toEmail, $subject, $text_message = null, $cc = null, $bcc = null, $replyTo = null, $html_message = null, $attachments = null) { require_once 'CRM/Core/BAO/MailSettings.php'; $returnPath = CRM_Core_BAO_MailSettings::defaultReturnPath(); if (!$returnPath) { $returnPath = self::pluckEmailFromHeader($from); } $headers = array(); $headers['From'] = $from; $headers['To'] = "{$toDisplayName} <{$toEmail}>"; $headers['Cc'] = $cc; $headers['Subject'] = $subject; $headers['Content-Type'] = $html_message ? 'multipart/mixed; charset=utf-8' : 'text/plain; charset=utf-8'; $headers['Content-Disposition'] = 'inline'; $headers['Content-Transfer-Encoding'] = '8bit'; $headers['Return-Path'] = $returnPath; $headers['Reply-To'] = isset($replyTo) ? $replyTo : $from; $headers['Date'] = date('r'); $to = array($toEmail); if ($cc) { $to[] = $cc; } if ($bcc) { $to[] = $bcc; } // we need to wrap Mail_mime because PEAR is apparently unable to fix // a six-year-old bug (PEAR bug #30) in Mail_mime::_encodeHeaders() // this fixes CRM-4631 require_once 'CRM/Utils/Mail/FixedMailMIME.php'; $msg = new CRM_Utils_Mail_FixedMailMIME("\n"); if ($text_message) { $msg->setTxtBody($text_message); } if ($html_message) { $msg->setHTMLBody($html_message); } if (!empty($attachments)) { foreach ($attachments as $fileID => $attach) { $msg->addAttachment($attach['fullPath'], $attach['mime_type'], $attach['cleanName']); } } $message = self::setMimeParams($msg); $headers =& $msg->headers($headers); $result = null; $mailer =& CRM_Core_Config::getMailer(); CRM_Core_Error::ignoreException(); if (is_object($mailer)) { $result = $mailer->send($to, $headers, $message); CRM_Core_Error::setCallback(); if (is_a($result, 'PEAR_Error')) { $message = self::errorMessage($mailer, $result); CRM_Core_Session::setStatus($message, false); return false; } return true; } return false; }
static function send(&$params) { require_once 'CRM/Core/BAO/MailSettings.php'; $returnPath = CRM_Core_BAO_MailSettings::defaultReturnPath(); $from = CRM_Utils_Array::value('from', $params); if (!$returnPath) { $returnPath = self::pluckEmailFromHeader($from); } $params['returnPath'] = $returnPath; // first call the mail alter hook require_once 'CRM/Utils/Hook.php'; CRM_Utils_Hook::alterMailParams($params); // check if any module has aborted mail sending if (CRM_Utils_Array::value('abortMailSend', $params) || !CRM_Utils_Array::value('toEmail', $params)) { return false; } $textMessage = CRM_Utils_Array::value('text', $params); $htmlMessage = CRM_Utils_Array::value('html', $params); $attachments = CRM_Utils_Array::value('attachments', $params); $headers = array(); $headers['From'] = $params['from']; $headers['To'] = "{$params['toName']} <{$params['toEmail']}>"; $headers['Cc'] = CRM_Utils_Array::value('cc', $params); $headers['Subject'] = CRM_Utils_Array::value('subject', $params); $headers['Content-Type'] = $htmlMessage ? 'multipart/mixed; charset=utf-8' : 'text/plain; charset=utf-8'; $headers['Content-Disposition'] = 'inline'; $headers['Content-Transfer-Encoding'] = '8bit'; $headers['Return-Path'] = CRM_Utils_Array::value('returnPath', $params); $headers['Reply-To'] = CRM_Utils_Array::value('replyTo', $params, $from); $headers['Date'] = date('r'); $to = array($params['toEmail']); if (CRM_Utils_Array::value('cc', $params)) { $to[] = CRM_Utils_Array::value('cc', $params); } if (CRM_Utils_Array::value('bcc', $params)) { $to[] = CRM_Utils_Array::value('bcc', $params); } // we need to wrap Mail_mime because PEAR is apparently unable to fix // a six-year-old bug (PEAR bug #30) in Mail_mime::_encodeHeaders() // this fixes CRM-4631 require_once 'CRM/Utils/Mail/FixedMailMIME.php'; $msg = new CRM_Utils_Mail_FixedMailMIME("\n"); if ($textMessage) { $msg->setTxtBody($textMessage); } if ($htmlMessage) { $msg->setHTMLBody($htmlMessage); } if (!empty($attachments)) { foreach ($attachments as $fileID => $attach) { $msg->addAttachment($attach['fullPath'], $attach['mime_type'], $attach['cleanName']); } } $message = self::setMimeParams($msg); $headers =& $msg->headers($headers); $result = null; $mailer =& CRM_Core_Config::getMailer(); CRM_Core_Error::ignoreException(); if (is_object($mailer)) { $result = $mailer->send($to, $headers, $message); CRM_Core_Error::setCallback(); if (is_a($result, 'PEAR_Error')) { $message = self::errorMessage($mailer, $result); CRM_Core_Session::setStatus($message, false); return false; } return true; } return false; }