Пример #1
0
 /**
  * Helper function for sending a mail
  *
  * @author Adrian Lang <*****@*****.**>
  *
  * @param string $subscriber_mail The target mail address
  * @param string $subject         The lang id of the mail subject (without the
  *                                prefix “mail_”)
  * @param string $context         The context of this mail, eg. page or namespace id
  * @param string $template        The name of the mail template
  * @param array  $trep            Predefined parameters used to parse the
  *                                template (in text format)
  * @param array  $hrep            Predefined parameters used to parse the
  *                                template (in HTML format), null to default to $trep
  * @param array  $headers         Additional mail headers in the form 'name' => 'value'
  * @return bool
  */
 protected function send($subscriber_mail, $subject, $context, $template, $trep, $hrep = null, $headers = array())
 {
     global $lang;
     global $conf;
     $text = rawLocale($template);
     $subject = $lang['mail_' . $subject] . ' ' . $context;
     $mail = new Mailer();
     $mail->bcc($subscriber_mail);
     $mail->subject($subject);
     $mail->setBody($text, $trep, $hrep);
     if (in_array($template, array('subscr_list', 'subscr_digest'))) {
         $mail->from($conf['mailfromnobody']);
     }
     if (isset($trep['SUBSCRIBE'])) {
         $mail->setHeader('List-Unsubscribe', '<' . $trep['SUBSCRIBE'] . '>', false);
     }
     foreach ($headers as $header => $value) {
         $mail->setHeader($header, $value);
     }
     return $mail->send();
 }
Пример #2
0
 /**
  * Sends a notify mail on new comment
  *
  * @param  array  $comment  data array of the new comment
  * @param  array  $subscribers data of the subscribers
  *
  * @author Andreas Gohr <*****@*****.**>
  * @author Esther Brunner <*****@*****.**>
  */
 function _notify($comment, &$subscribers)
 {
     global $conf;
     global $ID;
     $notify_text = io_readfile($this->localfn('subscribermail'));
     $confirm_text = io_readfile($this->localfn('confirmsubscribe'));
     $subject_notify = '[' . $conf['title'] . '] ' . $this->getLang('mail_newcomment');
     $subject_subscribe = '[' . $conf['title'] . '] ' . $this->getLang('subscribe');
     $mailer = new Mailer();
     if (empty($_SERVER['REMOTE_USER'])) {
         $mailer->from($conf['mailfromnobody']);
     }
     $replace = array('PAGE' => $ID, 'TITLE' => $conf['title'], 'DATE' => dformat($comment['date']['created'], $conf['dformat']), 'NAME' => $comment['user']['name'], 'TEXT' => $comment['raw'], 'COMMENTURL' => wl($ID, '', true) . '#comment_' . $comment['cid'], 'UNSUBSCRIBE' => wl($ID, 'do=subscribe', true, '&'), 'DOKUWIKIURL' => DOKU_URL);
     $confirm_replace = array('PAGE' => $ID, 'TITLE' => $conf['title'], 'DOKUWIKIURL' => DOKU_URL);
     $mailer->subject($subject_notify);
     $mailer->setBody($notify_text, $replace);
     // send mail to notify address
     if ($conf['notify']) {
         $mailer->bcc($conf['notify']);
         $mailer->send();
     }
     // notify page subscribers
     if (actionOK('subscribe')) {
         $data = array('id' => $ID, 'addresslist' => '', 'self' => false);
         if (class_exists('Subscription')) {
             /* Introduced in DokuWiki 2013-05-10 */
             trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, array(new Subscription(), 'notifyaddresses'));
         } else {
             /* Old, deprecated default handler */
             trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, 'subscription_addresslist');
         }
         $to = $data['addresslist'];
         if (!empty($to)) {
             $mailer->bcc($to);
             $mailer->send();
         }
     }
     // notify comment subscribers
     if (!empty($subscribers)) {
         foreach ($subscribers as $mail => $data) {
             $mailer->bcc($mail);
             if ($data['active']) {
                 $replace['UNSUBSCRIBE'] = wl($ID, 'do=discussion_unsubscribe&hash=' . $data['hash'], true, '&');
                 $mailer->subject($subject_notify);
                 $mailer->setBody($notify_text, $replace);
                 $mailer->send();
             } elseif (!$data['active'] && !$data['confirmsent']) {
                 $confirm_replace['SUBSCRIBE'] = wl($ID, 'do=discussion_confirmsubscribe&hash=' . $data['hash'], true, '&');
                 $mailer->subject($subject_subscribe);
                 $mailer->setBody($confirm_text, $confirm_replace);
                 $mailer->send();
                 $subscribers[$mail]['confirmsent'] = true;
             }
         }
     }
 }
Пример #3
0
/**
 * Helper function for sending a mail
 *
 * @author Adrian Lang <*****@*****.**>
 *
 * @param string $subscriber_mail The target mail address
 * @param array  $replaces        Predefined parameters used to parse the
 *                                template
 * @param string $subject         The lang id of the mail subject (without the
 *                                prefix “mail_”)
 * @param string $id              The page or namespace id
 * @param string $template        The name of the mail template
 * @return bool
 */
function subscription_send($subscriber_mail, $replaces, $subject, $id, $template)
{
    global $lang;
    global $conf;
    $text = rawLocale($template);
    $trep = array_merge($replaces, array('PAGE' => $id));
    $hrep = $trep;
    $hrep['DIFF'] = nl2br(htmlspecialchars($hrep['DIFF']));
    $subject = $lang['mail_' . $subject] . ' ' . $id;
    $mail = new Mailer();
    $mail->bcc($subscriber_mail);
    $mail->subject($subject);
    $mail->setBody($text, $trep, $hrep);
    $mail->from($conf['mailfromnobody']);
    $mail->setHeader('List-Unsubscribe', '<' . wl($id, array('do' => 'subscribe'), true, '&') . '>', false);
    return $mail->send();
}
Пример #4
0
 /**
  * Sends a notify mail on new comment
  *
  * @param  array  $comment  data array of the new comment
  * @param  array  $subscribers data of the subscribers
  *
  * @author Andreas Gohr <*****@*****.**>
  * @author Esther Brunner <*****@*****.**>
  */
 protected function _notify($comment, &$subscribers)
 {
     global $conf;
     global $ID;
     $notify_text = io_readfile($this->localfn('subscribermail'));
     $confirm_text = io_readfile($this->localfn('confirmsubscribe'));
     $subject_notify = '[' . $conf['title'] . '] ' . $this->getLang('mail_newcomment');
     $subject_subscribe = '[' . $conf['title'] . '] ' . $this->getLang('subscribe');
     $mailer = new Mailer();
     if (empty($_SERVER['REMOTE_USER'])) {
         $mailer->from($conf['mailfromnobody']);
     }
     $replace = array('PAGE' => $ID, 'TITLE' => $conf['title'], 'DATE' => dformat($comment['date']['created'], $conf['dformat']), 'NAME' => $comment['user']['name'], 'TEXT' => $comment['raw'], 'COMMENTURL' => wl($ID, '', true) . '#comment_' . $comment['cid'], 'UNSUBSCRIBE' => wl($ID, 'do=subscribe', true, '&'), 'DOKUWIKIURL' => DOKU_URL);
     $confirm_replace = array('PAGE' => $ID, 'TITLE' => $conf['title'], 'DOKUWIKIURL' => DOKU_URL);
     $mailer->subject($subject_notify);
     $mailer->setBody($notify_text, $replace);
     // send mail to notify address
     if ($conf['notify']) {
         $mailer->bcc($conf['notify']);
         $mailer->send();
     }
     // send email to moderators
     if ($this->getConf('moderatorsnotify')) {
         $mods = trim($this->getConf('moderatorgroups'));
         if (!empty($mods)) {
             global $auth;
             // create a clean mods list
             $mods = explode(',', $mods);
             $mods = array_map('trim', $mods);
             $mods = array_unique($mods);
             $mods = array_filter($mods);
             // search for moderators users
             foreach ($mods as $mod) {
                 if (!$auth->isCaseSensitive()) {
                     $mod = utf8_strtolower($mod);
                 }
                 // create a clean mailing list
                 $dests = array();
                 if ($mod[0] == '@') {
                     foreach ($auth->retrieveUsers(0, 0, array('grps' => $auth->cleanGroup(substr($mod, 1)))) as $user) {
                         if (!empty($user['mail'])) {
                             array_push($dests, $user['mail']);
                         }
                     }
                 } else {
                     $userdata = $auth->getUserData($auth->cleanUser($mod));
                     if (!empty($userdata['mail'])) {
                         array_push($dests, $userdata['mail']);
                     }
                 }
                 $dests = array_unique($dests);
                 // notify the users
                 $mailer->bcc(implode(',', $dests));
                 $mailer->send();
             }
         }
     }
     // notify page subscribers
     if (actionOK('subscribe')) {
         $data = array('id' => $ID, 'addresslist' => '', 'self' => false);
         if (class_exists('Subscription')) {
             /* Introduced in DokuWiki 2013-05-10 */
             trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, array(new Subscription(), 'notifyaddresses'));
         } else {
             /* Old, deprecated default handler */
             trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, 'subscription_addresslist');
         }
         $to = $data['addresslist'];
         if (!empty($to)) {
             $mailer->bcc($to);
             $mailer->send();
         }
     }
     // notify comment subscribers
     if (!empty($subscribers)) {
         foreach ($subscribers as $mail => $data) {
             $mailer->bcc($mail);
             if ($data['active']) {
                 $replace['UNSUBSCRIBE'] = wl($ID, 'do=discussion_unsubscribe&hash=' . $data['hash'], true, '&');
                 $mailer->subject($subject_notify);
                 $mailer->setBody($notify_text, $replace);
                 $mailer->send();
             } elseif (!$data['active'] && !$data['confirmsent']) {
                 $confirm_replace['SUBSCRIBE'] = wl($ID, 'do=discussion_confirmsubscribe&hash=' . $data['hash'], true, '&');
                 $mailer->subject($subject_subscribe);
                 $mailer->setBody($confirm_text, $confirm_replace);
                 $mailer->send();
                 $subscribers[$mail]['confirmsent'] = true;
             }
         }
     }
 }
Пример #5
0
 private function send_mail($to, $subject, $content, $from, $cc, $bcc)
 {
     // send a mail
     $mail = new Mailer();
     $mail->to($to);
     $mail->cc($cc);
     $mail->bcc($bcc);
     $mail->from($from);
     $mail->subject($subject);
     $mail->setBody($content);
     $ok = $mail->send();
     return $ok;
 }