function html_email_handler_make_html_body($subject = "", $body = "") { global $CONFIG; // in some cases when pagesetup isn't done yet this can cause problems // so manualy set is to done $unset = false; if (!isset($CONFIG->pagesetupdone)) { $unset = true; $CONFIG->pagesetupdone = true; } // generate HTML mail body $result = elgg_view("html_email_handler/notification/body", array("title" => $subject, "message" => parse_urls($body))); // do we need to restore pagesetup if ($unset) { unset($CONFIG->pagesetupdone); } if (defined("XML_DOCUMENT_NODE")) { if ($transform = html_email_handler_css_inliner($result)) { $result = $transform; } } return $result; }
/** * Sends the preview newsletter * * @param Newsletter $entity newsletter to be send * @param string $email emailaddress of the recipient * * @return bool if sending is succes or not */ function newsletter_send_preview(Newsletter $entity, $email) { $result = false; if (!empty($entity) && elgg_instanceof($entity, "object", Newsletter::SUBTYPE) && !empty($email)) { $container = $entity->getContainerEntity(); // build correct subject if ($entity->subject) { $message_subject = $entity->subject; } else { $message_subject = elgg_echo("newsletter:subject", array($container->name, $entity->title)); } // plaintext message $message_plaintext_content = elgg_echo("newsletter:plain_message", array($entity->getURL())); // html content $message_html_content = elgg_view_layout("newsletter", array("entity" => $entity)); // convert to inline CSS for email clients $message_html_content = html_email_handler_css_inliner($message_html_content); // add unsubscribe link $unsubscribe_link = newsletter_generate_unsubscribe_link($container, $email); $message_html_content = str_ireplace(urlencode("{unsublink}"), $unsubscribe_link, $message_html_content); // replace online link $online_link = $entity->getURL(); $new_online_link = $online_link . "?e=" . $email; $message_html_content = str_ireplace($online_link, $new_online_link, $message_html_content); // start creating sending options $send_options = array("from" => html_email_handler_make_rfc822_address($container), "subject" => $message_subject, "plaintext_message" => $message_plaintext_content, "to" => $email, "html_message" => $message_html_content); // send preview $result = html_email_handler_send_email($send_options); } return $result; }
/** * Send out the generated digest * * @param ElggUser $user * @param string $subject * @param string $html_body * @param string $plain_link * @param bool $bypass * @return boolean */ function digest_send_mail(ElggUser $user, $subject, $html_body, $plain_link = "") { global $digest_mail_send; $result = false; if (!empty($user) && elgg_instanceof($user, "user", null, "ElggUser") && !empty($subject) && !empty($html_body)) { // convert css if ($transform = html_email_handler_css_inliner($html_body)) { $html_body = $transform; } // email settings $to = html_email_handler_make_rfc822_address($user); if (!empty($plain_link)) { // make a plaintext message for non HTML users $plaintext_message .= elgg_echo("digest:mail:plaintext:description", array($plain_link)); } // send out the mail $options = array("to" => $to, "subject" => $subject, "html_message" => $html_body, "plaintext_message" => $plaintext_message); if (html_email_handler_send_email($options, $user->email)) { if (empty($digest_mail_send)) { $digest_mail_send = 1; } else { $digest_mail_send++; } $result = true; } } return $result; }
/** * Make the HTML body from a $options array * * @param array $options the options * @param string $body the message body * * @return string */ function html_email_handler_make_html_body($options = "", $body = "") { global $CONFIG; if (!is_array($options)) { elgg_deprecated_notice("html_email_handler_make_html_body now takes an array as param, please update your code", "1.9"); $options = array("subject" => $options, "body" => $body); } $defaults = array("subject" => "", "body" => "", "language" => get_current_language()); $options = array_merge($defaults, $options); $options['body'] = parse_urls($options['body']); // in some cases when pagesetup isn't done yet this can cause problems // so manualy set is to done $unset = false; if (!isset($CONFIG->pagesetupdone)) { $unset = true; $CONFIG->pagesetupdone = true; } // generate HTML mail body $result = elgg_view("html_email_handler/notification/body", $options); // do we need to restore pagesetup if ($unset) { unset($CONFIG->pagesetupdone); } if (defined("XML_DOCUMENT_NODE")) { if ($transform = html_email_handler_css_inliner($result)) { $result = $transform; } } return $result; }
<?php /** * A test page for theme developer to view the layout of an email notification */ elgg_admin_gatekeeper(); $user = elgg_get_logged_in_user_entity(); $site = elgg_get_site_entity(); $subject = elgg_echo("useradd:subject"); $plain_message = elgg_echo("useradd:body", array($user->name, $site->name, $site->url, $user->username, 'test123')); $html_message = elgg_view("html_email_handler/notification/body", array("subject" => $subject, "body" => $plain_message, "recipient" => $user)); $html_message = html_email_handler_css_inliner($html_message); $html_message_ext = html_email_handler_normalize_urls($html_message); $html_message_ext = html_email_handler_base64_encode_images($html_message_ext); echo $html_message_ext; if (get_input("mail")) { // Test sending a basic HTML mail $options = array('to' => $user->email, 'subject' => $subject, 'body' => $plain_message, 'recipient' => $user, 'attachments' => array(array('filepath' => dirname(__DIR__) . '/manifest.xml'))); html_email_handler_send_email($options); // Test sending attachments through notify_user() $to = $user->guid; $from = $site->guid; $subject = 'Notification test'; $message = 'This notification has been sent using notify_user() and it should have an attachment.'; $params = array('recipient' => $user, 'attachments' => array(array('filepath' => dirname(__DIR__) . '/manifest.xml'))); notify_user($to, $from, $subject, $message, $params, array('email')); }
/** * Sends the preview newsletter * * @param Newsletter $entity newsletter to be send * @param string $email emailaddress of the recipient * * @return bool if sending is succes or not */ function newsletter_send_preview(Newsletter $entity, $email) { if (!elgg_instanceof($entity, "object", Newsletter::SUBTYPE) || empty($email)) { return false; } $container = $entity->getContainerEntity(); // build correct subject if ($entity->subject) { $message_subject = $entity->subject; } else { $message_subject = elgg_echo('newsletter:subject', [$container->name, $entity->title]); } // plaintext message $message_plaintext_content = elgg_echo('newsletter:plain_message', [$entity->getURL()]); // html content $message_html_content = elgg_view_layout('newsletter', ['entity' => $entity]); // convert to inline CSS for email clients $message_html_content = html_email_handler_css_inliner($message_html_content); // add unsubscribe link $unsubscribe_link = newsletter_generate_unsubscribe_link($container, $email); $message_html_content = str_ireplace(urlencode("{unsublink}"), $unsubscribe_link, $message_html_content); // replace online link $online_link = $entity->getURL(); $new_online_link = $online_link . '?e=' . $email; $message_html_content = str_ireplace($online_link, $new_online_link, $message_html_content); // send preview return html_email_handler_send_email(['from' => html_email_handler_make_rfc822_address($container), 'subject' => $message_subject, 'plaintext_message' => $message_plaintext_content, 'to' => $email, 'html_message' => $message_html_content]); }
/** * Send out the generated digest * * @param ElggUser $user the user to send the digest to * @param string $subject message subject * @param string $html_body html message * @param string $plain_link plaintext message * * @return bool */ function digest_send_mail(ElggUser $user, $subject, $html_body, $plain_link = "") { global $digest_mail_send; $result = false; // validate input if (empty($user) || !elgg_instanceof($user, "user", null, "ElggUser") || empty($subject) || empty($html_body)) { return $result; } // convert css $transform = html_email_handler_css_inliner($html_body); if (!empty($transform)) { $html_body = $transform; } // email settings - prevent sending to any other address than the recipient personn $to = html_email_handler_make_rfc822_address($user, false); $plaintext_message = ""; if (!empty($plain_link)) { // make a plaintext message for non HTML users $plaintext_message = elgg_echo("digest:mail:plaintext:description", array($plain_link)); } // send out the mail $options = array("to" => $to, "subject" => $subject, "html_message" => $html_body, "plaintext_message" => $plaintext_message); if (html_email_handler_send_email($options)) { if (empty($digest_mail_send)) { $digest_mail_send = 1; } else { $digest_mail_send++; } $result = true; } return $result; }