예제 #1
0
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;
}
예제 #2
0
/**
 * 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;
}
예제 #3
0
/**
 * 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;
}
예제 #4
0
/**
 * 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;
}
예제 #5
0
파일: test.php 프로젝트: lorea/Hydra-dev
<?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'));
}
예제 #6
0
/**
 * 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]);
}
예제 #7
0
/**
 * 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;
}