parent
551b30dc92
commit
4f762008bf
@ -1,239 +0,0 @@ |
||||
<?php |
||||
/* For licensing terms, see /license.txt */ |
||||
/** |
||||
* |
||||
* @package chamilo.library |
||||
*/ |
||||
|
||||
// A regular expression for testing against valid email addresses. |
||||
// It should actually be revised for using the complete RFC3696 description: |
||||
// http://tools.ietf.org/html/rfc3696#section-3 |
||||
//$regexp_rfc3696 = "^[0-9a-z_\.+-]+@(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z][0-9a-z-]*[0-9a-z]\.)+[a-z]{2,3})$"; // Deprecated, 13-OCT-2010. |
||||
|
||||
/** |
||||
* Sends email using the phpmailer class |
||||
* Sender name and email can be specified, if not specified |
||||
* name and email of the platform admin are used |
||||
* |
||||
* @author Bert Vanderkimpen ICT&O UGent |
||||
* |
||||
* @param recipient_name name of recipient |
||||
* @param recipient_email email of recipient |
||||
* @param message email body |
||||
* @param subject email subject |
||||
* @return returns true if mail was sent |
||||
* @see class.phpmailer.php |
||||
* @deprecated use api_mail_html() |
||||
*/ |
||||
function api_mail( |
||||
$recipient_name, |
||||
$recipient_email, |
||||
$subject, |
||||
$message, |
||||
$sender_name = '', |
||||
$sender_email = '', |
||||
$extra_headers = '', |
||||
$additionalParameters = array() |
||||
) { |
||||
error_log("api_mail is deprecated. Using api_mail_html() on line ".__LINE__." of [".__FILE__."]"); |
||||
return api_mail_html( |
||||
$recipient_name, |
||||
$recipient_email, |
||||
$subject, |
||||
$message, |
||||
$sender_name, |
||||
$sender_email, |
||||
$extra_headers, |
||||
null, |
||||
null, |
||||
$additionalParameters |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Sends an HTML email using the phpmailer class (and multipart/alternative to downgrade gracefully) |
||||
* Sender name and email can be specified, if not specified |
||||
* name and email of the platform admin are used |
||||
* |
||||
* @author Bert Vanderkimpen ICT&O UGent |
||||
* @author Yannick Warnier <yannick.warnier@beeznest.com> |
||||
* |
||||
* @param string name of recipient |
||||
* @param string email of recipient |
||||
* @param string email subject |
||||
* @param string email body |
||||
* @param string sender name |
||||
* @param string sender e-mail |
||||
* @param array extra headers in form $headers = array($name => $value) to allow parsing |
||||
* @param array data file (path and filename) |
||||
* @param array data to attach a file (optional) |
||||
* @param bool True for attaching a embedded file inside content html (optional) |
||||
* @return returns true if mail was sent |
||||
* @see class.phpmailer.php |
||||
*/ |
||||
function api_mail_html( |
||||
$recipient_name, |
||||
$recipient_email, |
||||
$subject, |
||||
$message, |
||||
$senderName = '', |
||||
$senderEmail = '', |
||||
$extra_headers = array(), |
||||
$data_file = array(), |
||||
$embedded_image = false, |
||||
$additionalParameters = array() |
||||
) { |
||||
global $platform_email; |
||||
|
||||
$mail = new PHPMailer(); |
||||
$mail->Mailer = $platform_email['SMTP_MAILER']; |
||||
$mail->Host = $platform_email['SMTP_HOST']; |
||||
$mail->Port = $platform_email['SMTP_PORT']; |
||||
$mail->CharSet = $platform_email['SMTP_CHARSET']; |
||||
// Stay far below SMTP protocol 980 chars limit. |
||||
$mail->WordWrap = 200; |
||||
|
||||
if ($platform_email['SMTP_AUTH']) { |
||||
$mail->SMTPAuth = 1; |
||||
$mail->Username = $platform_email['SMTP_USER']; |
||||
$mail->Password = $platform_email['SMTP_PASS']; |
||||
} |
||||
|
||||
// 5 = low, 1 = high |
||||
$mail->Priority = 3; |
||||
$mail->SMTPKeepAlive = true; |
||||
|
||||
// Default values |
||||
$notification = new Notification(); |
||||
$defaultEmail = $notification->getDefaultPlatformSenderEmail(); |
||||
$defaultName = $notification->getDefaultPlatformSenderName(); |
||||
|
||||
// Error to admin. |
||||
$mail->AddCustomHeader('Errors-To: '.$defaultEmail); |
||||
|
||||
// If the parameter is set don't use the admin. |
||||
$senderName = !empty($senderName) ? $senderName : $defaultEmail; |
||||
$senderEmail = !empty($senderEmail) ? $senderEmail : $defaultName; |
||||
|
||||
// Reply to first |
||||
if (isset($extra_headers['reply_to'])) { |
||||
$mail->AddReplyTo( |
||||
$extra_headers['reply_to']['mail'], |
||||
$extra_headers['reply_to']['name'] |
||||
); |
||||
$mail->Sender = $extra_headers['reply_to']['mail']; |
||||
unset($extra_headers['reply_to']); |
||||
} |
||||
|
||||
$mail->SetFrom($senderEmail, $senderName); |
||||
|
||||
$mail->Subject = $subject; |
||||
$mail->AltBody = strip_tags( |
||||
str_replace('<br />', "\n", api_html_entity_decode($message)) |
||||
); |
||||
|
||||
// Send embedded image. |
||||
if ($embedded_image) { |
||||
// Get all images html inside content. |
||||
preg_match_all("/<img\s+.*?src=[\"\']?([^\"\' >]*)[\"\']?[^>]*>/i", $message, $m); |
||||
// Prepare new tag images. |
||||
$new_images_html = array(); |
||||
$i = 1; |
||||
if (!empty($m[1])) { |
||||
foreach ($m[1] as $image_path) { |
||||
$real_path = realpath($image_path); |
||||
$filename = basename($image_path); |
||||
$image_cid = $filename.'_'.$i; |
||||
$encoding = 'base64'; |
||||
$image_type = mime_content_type($real_path); |
||||
$mail->AddEmbeddedImage( |
||||
$real_path, |
||||
$image_cid, |
||||
$filename, |
||||
$encoding, |
||||
$image_type |
||||
); |
||||
$new_images_html[] = '<img src="cid:'.$image_cid.'" />'; |
||||
$i++; |
||||
} |
||||
} |
||||
|
||||
// Replace origin image for new embedded image html. |
||||
$x = 0; |
||||
if (!empty($m[0])) { |
||||
foreach ($m[0] as $orig_img) { |
||||
$message = str_replace($orig_img, $new_images_html[$x], $message); |
||||
$x++; |
||||
} |
||||
} |
||||
} |
||||
$message = str_replace(array("\n\r", "\n", "\r"), '<br />', $message); |
||||
$mail->Body = '<html><head></head><body>'.$message.'</body></html>'; |
||||
|
||||
// Attachment ... |
||||
if (!empty($data_file)) { |
||||
$mail->AddAttachment($data_file['path'], $data_file['filename']); |
||||
} |
||||
|
||||
// Only valid addresses are accepted. |
||||
if (is_array($recipient_email)) { |
||||
foreach ($recipient_email as $dest) { |
||||
if (api_valid_email($dest)) { |
||||
$mail->AddAddress($dest, $recipient_name); |
||||
} |
||||
} |
||||
} else { |
||||
if (api_valid_email($recipient_email)) { |
||||
$mail->AddAddress($recipient_email, $recipient_name); |
||||
} else { |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
if (is_array($extra_headers) && count($extra_headers) > 0) { |
||||
foreach ($extra_headers as $key => $value) { |
||||
switch (strtolower($key)) { |
||||
case 'encoding': |
||||
case 'content-transfer-encoding': |
||||
$mail->Encoding = $value; |
||||
break; |
||||
case 'charset': |
||||
$mail->Charset = $value; |
||||
break; |
||||
case 'contenttype': |
||||
case 'content-type': |
||||
$mail->ContentType = $value; |
||||
break; |
||||
default: |
||||
$mail->AddCustomHeader($key.':'.$value); |
||||
break; |
||||
} |
||||
} |
||||
} else { |
||||
if (!empty($extra_headers)) { |
||||
$mail->AddCustomHeader($extra_headers); |
||||
} |
||||
} |
||||
|
||||
// WordWrap the html body (phpMailer only fixes AltBody) FS#2988 |
||||
$mail->Body = $mail->WrapText($mail->Body, $mail->WordWrap); |
||||
// Send the mail message. |
||||
if (!$mail->Send()) { |
||||
error_log('ERROR: mail not sent to '.$recipient_name.' ('.$recipient_email.') because of '.$mail->ErrorInfo.'<br />'); |
||||
return 0; |
||||
} |
||||
|
||||
$plugin = new AppPlugin(); |
||||
$installedPluginsList = $plugin->getInstalledPluginListObject(); |
||||
foreach ($installedPluginsList as $installedPlugin) { |
||||
if ($installedPlugin->isMailPlugin and array_key_exists("smsType", $additionalParameters)) { |
||||
$className = str_replace("Plugin", "", get_class($installedPlugin)); |
||||
$smsObject = new $className; |
||||
$smsObject->send($additionalParameters); |
||||
} |
||||
} |
||||
|
||||
// Clear all the addresses. |
||||
$mail->ClearAddresses(); |
||||
return 1; |
||||
} |
Loading…
Reference in new issue