/**
  * handle user request
  */
 function handle()
 {
     global $INPUT;
     global $conf;
     if (!$INPUT->bool('send')) {
         return;
     }
     // make sure debugging is on;
     $conf['plugin']['smtp']['debug'] = 1;
     // send a mail
     $mail = new Mailer();
     if ($INPUT->str('to')) {
         $mail->to($INPUT->str('to'));
     }
     if ($INPUT->str('cc')) {
         $mail->to($INPUT->str('cc'));
     }
     if ($INPUT->str('bcc')) {
         $mail->to($INPUT->str('bcc'));
     }
     $mail->subject('DokuWiki says hello');
     $mail->setBody("Hi @USER@\n\nThis is a test from @DOKUWIKIURL@");
     $ok = $mail->send();
     // check result
     if ($ok) {
         msg('Message was sent. SMTP seems to work.', 1);
     } else {
         msg('Message wasn\'t sent. SMTP seems not to work properly.', -1);
     }
 }
Exemple #2
0
/**
 * Send a  new password
 *
 * This function handles both phases of the password reset:
 *
 *   - handling the first request of password reset
 *   - validating the password reset auth token
 *
 * @author Benoit Chesneau <*****@*****.**>
 * @author Chris Smith <*****@*****.**>
 * @author Andreas Gohr <*****@*****.**>
 *
 * @return bool true on success, false on any error
 */
function act_resendpwd()
{
    global $lang;
    global $conf;
    /* @var auth_basic $auth */
    global $auth;
    /* @var Input $INPUT */
    global $INPUT;
    if (!actionOK('resendpwd')) {
        msg($lang['resendna'], -1);
        return false;
    }
    $token = preg_replace('/[^a-f0-9]+/', '', $INPUT->str('pwauth'));
    if ($token) {
        // we're in token phase - get user info from token
        $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth';
        if (!@file_exists($tfile)) {
            msg($lang['resendpwdbadauth'], -1);
            $INPUT->remove('pwauth');
            return false;
        }
        // token is only valid for 3 days
        if (time() - filemtime($tfile) > 3 * 60 * 60 * 24) {
            msg($lang['resendpwdbadauth'], -1);
            $INPUT->remove('pwauth');
            @unlink($tfile);
            return false;
        }
        $user = io_readfile($tfile);
        $userinfo = $auth->getUserData($user);
        if (!$userinfo['mail']) {
            msg($lang['resendpwdnouser'], -1);
            return false;
        }
        if (!$conf['autopasswd']) {
            // we let the user choose a password
            $pass = $INPUT->str('pass');
            // password given correctly?
            if (!$pass) {
                return false;
            }
            if ($pass != $INPUT->str('passchk')) {
                msg($lang['regbadpass'], -1);
                return false;
            }
            // change it
            if (!$auth->triggerUserMod('modify', array($user, array('pass' => $pass)))) {
                msg('error modifying user data', -1);
                return false;
            }
        } else {
            // autogenerate the password and send by mail
            $pass = auth_pwgen();
            if (!$auth->triggerUserMod('modify', array($user, array('pass' => $pass)))) {
                msg('error modifying user data', -1);
                return false;
            }
            if (auth_sendPassword($user, $pass)) {
                msg($lang['resendpwdsuccess'], 1);
            } else {
                msg($lang['regmailfail'], -1);
            }
        }
        @unlink($tfile);
        return true;
    } else {
        // we're in request phase
        if (!$INPUT->post->bool('save')) {
            return false;
        }
        if (!$INPUT->post->str('login')) {
            msg($lang['resendpwdmissing'], -1);
            return false;
        } else {
            $user = trim($auth->cleanUser($INPUT->post->str('login')));
        }
        $userinfo = $auth->getUserData($user);
        if (!$userinfo['mail']) {
            msg($lang['resendpwdnouser'], -1);
            return false;
        }
        // generate auth token
        $token = md5(auth_cookiesalt() . $user);
        //secret but user based
        $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth';
        $url = wl('', array('do' => 'resendpwd', 'pwauth' => $token), true, '&');
        io_saveFile($tfile, $user);
        $text = rawLocale('pwconfirm');
        $trep = array('FULLNAME' => $userinfo['name'], 'LOGIN' => $user, 'CONFIRM' => $url);
        $mail = new Mailer();
        $mail->to($userinfo['name'] . ' <' . $userinfo['mail'] . '>');
        $mail->subject($lang['regpwmail']);
        $mail->setBody($text, $trep);
        if ($mail->send()) {
            msg($lang['resendpwdconfirm'], 1);
        } else {
            msg($lang['regmailfail'], -1);
        }
        return true;
    }
    // never reached
}
Exemple #3
0
/**
 * Sends a notify mail on page change or registration
 *
 * @param string     $id       The changed page
 * @param string     $who      Who to notify (admin|subscribers|register)
 * @param int|string $rev Old page revision
 * @param string     $summary  What changed
 * @param boolean    $minor    Is this a minor edit?
 * @param array      $replace  Additional string substitutions, @KEY@ to be replaced by value
 *
 * @return bool
 * @author Andreas Gohr <*****@*****.**>
 */
function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace = array())
{
    global $lang;
    global $conf;
    global $INFO;
    global $DIFF_INLINESTYLES;
    // decide if there is something to do, eg. whom to mail
    if ($who == 'admin') {
        if (empty($conf['notify'])) {
            return false;
        }
        //notify enabled?
        $text = rawLocale('mailtext');
        $to = $conf['notify'];
        $bcc = '';
    } elseif ($who == 'subscribers') {
        if (!$conf['subscribers']) {
            return false;
        }
        //subscribers enabled?
        if ($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) {
            return false;
        }
        //skip minors
        $data = array('id' => $id, 'addresslist' => '', 'self' => false);
        trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, 'subscription_addresslist');
        $bcc = $data['addresslist'];
        if (empty($bcc)) {
            return false;
        }
        $to = '';
        $text = rawLocale('subscr_single');
    } elseif ($who == 'register') {
        if (empty($conf['registernotify'])) {
            return false;
        }
        $text = rawLocale('registermail');
        $to = $conf['registernotify'];
        $bcc = '';
    } else {
        return false;
        //just to be safe
    }
    // prepare replacements (keys not set in hrep will be taken from trep)
    $trep = array('NEWPAGE' => wl($id, '', true, '&'), 'PAGE' => $id, 'SUMMARY' => $summary);
    $trep = array_merge($trep, $replace);
    $hrep = array();
    // prepare content
    if ($who == 'register') {
        $subject = $lang['mail_new_user'] . ' ' . $summary;
    } elseif ($rev) {
        $subject = $lang['mail_changed'] . ' ' . $id;
        $trep['OLDPAGE'] = wl($id, "rev={$rev}", true, '&');
        $df = new Diff(explode("\n", rawWiki($id, $rev)), explode("\n", rawWiki($id)));
        $dformat = new UnifiedDiffFormatter();
        $tdiff = $dformat->format($df);
        $DIFF_INLINESTYLES = true;
        $dformat = new InlineDiffFormatter();
        $hdiff = $dformat->format($df);
        $hdiff = '<table>' . $hdiff . '</table>';
        $DIFF_INLINESTYLES = false;
    } else {
        $subject = $lang['mail_newpage'] . ' ' . $id;
        $trep['OLDPAGE'] = '---';
        $tdiff = rawWiki($id);
        $hdiff = nl2br(hsc($tdiff));
    }
    $trep['DIFF'] = $tdiff;
    $hrep['DIFF'] = $hdiff;
    // send mail
    $mail = new Mailer();
    $mail->to($to);
    $mail->bcc($bcc);
    $mail->subject($subject);
    $mail->setBody($text, $trep, $hrep);
    if ($who == 'subscribers') {
        $mail->setHeader('List-Unsubscribe', '<' . wl($id, array('do' => 'subscribe'), true, '&') . '>', false);
    }
    return $mail->send();
}
 /**
  * Send approve-mail to editor of the now approved revision
  *
  * @return bool false if there was an error passing the mail to the MTA
  */
 public function send_approve_mail()
 {
     global $ID;
     global $REV;
     /** @var DokuWiki_Auth_Plugin $auth */
     global $auth;
     $data = pageinfo();
     // get mail receiver
     if (!$REV) {
         $rev = $data['lastmod'];
     } else {
         $rev = $REV;
     }
     $changelog = new PageChangelog($ID);
     $revinfo = $changelog->getRevisionInfo($rev);
     $userinfo = $auth->getUserData($revinfo['user']);
     $receiver = $userinfo['mail'];
     // get mail sender
     $ReplyTo = $data['userinfo']['mail'];
     if ($ReplyTo == $receiver) {
         return true;
     }
     // get mail subject
     $subject = $this->getLang('apr_mail_app_subject');
     // get mail text
     $body = $this->create_mail_body('approve');
     $mail = new Mailer();
     $mail->to($receiver);
     $mail->subject($subject);
     $mail->setBody($body);
     $mail->setHeader("Reply-To", $ReplyTo);
     $returnStatus = $mail->send();
     return $returnStatus;
 }
        $headers .= 'From: marcz@lab1521.com' . "\r\n";
        return mail($this->email, $this->subject, $this->message, $headers);
    }
}
$emailTemplate = '<table>
        <tr><th>First Name</th><td>{{nameFirst}}</td></tr>
        <tr><th>Last Name</th><td>{{nameLast}}</td></tr>
        <tr><th>Email</th><td>{{email}}</td></tr>
        <tr><th>Phone</th><td>{{phone}}</td></tr>
        <tr><th>Message</th><td></td></tr>
        <tr><td colspan="2">{{message}}</td></tr>
    </table>
    ';
$antiSpam = new AntiSpam();
$mailer = new Mailer();
$mailer->to('*****@*****.**');
$mailer->subject('Online Enquiry To VineyardForSale');
$mailer->setTemplate($emailTemplate);
if (isset($_POST['antiSpamAnswer']) && isset($_POST['antiSpamToken'])) {
    $form = new ContactForm();
    $form->setFields(array('nameFirst' => 'required|sanitize', 'nameLast' => 'required|sanitize', 'email' => 'required|email', 'phone' => 'required|sanitize', 'message' => 'required|sanitize', 'antiSpamAnswer' => 'required|sanitize', 'antiSpamToken' => 'required|sanitize'));
    $form->setSource($_POST);
    $form->setFilter(array($antiSpam, 'answer'), array('antiSpamAnswer', 'antiSpamToken'));
    $validation = $form->validate();
    if ($validation['success']) {
        $mailer->fillTemplate($form->getFields());
        $mailer->send();
    }
    JSON::output($validation);
}
JSON::output($antiSpam->question());
 /**
  * Transmit the message via email to the address on file.
  * As a special case, configure the mail settings to send only via text.
  */
 public function transmitMessage($message, $force = false)
 {
     if (!$this->canUse() && !$force) {
         return false;
     }
     global $USERINFO, $conf;
     // Disable HTML for text messages.
     $oldconf = $conf['htmlmail'];
     $conf['htmlmail'] = 0;
     $number = $this->attribute->get("twofactor", "phone");
     if (!$number) {
         msg("TwoFactor: User has not defined a phone number.  Failing.", -1);
         // If there is no phone number, then fail.
         return false;
     }
     $gateway = $this->attribute->get("twofactorsmsgateway", "provider");
     msg("{$number}@{$gateway}");
     $providers = $this->_getProviders();
     if (array_key_exists($gateway, $providers)) {
         $to = "{$number}@{$providers[$gateway]}";
     } else {
         $to = '';
     }
     if (!$to) {
         msg("TwoFactor: Unable to define To field for email.  Failing.", -1);
         // If there is no recipient address, then fail.
         return false;
     }
     // Create the email object.
     $mail = new Mailer();
     $subject = $conf['title'] . ' login verification';
     $mail->to($to);
     $mail->subject($subject);
     $mail->setText($message);
     $result = $mail->send();
     // Reset the email config in case another email gets sent.
     $conf['htmlmail'] = $oldconf;
     // This is here only for debugging for me for now.  My windows box can't send out emails :P
     #if (!result) { msg($message, 0); return true;}
     return $result;
 }
Exemple #7
0
/**
 * Send a notify mail on uploads
 *
 * @author Andreas Gohr <*****@*****.**>
 * @fixme this should embed thumbnails of images in HTML version
 */
function media_notify($id, $file, $mime, $old_rev = false)
{
    global $lang;
    global $conf;
    global $INFO;
    if (empty($conf['notify'])) {
        return;
    }
    //notify enabled?
    $text = rawLocale('uploadmail');
    $trep = array('MIME' => $mime, 'MEDIA' => ml($id, '', true, '&', true), 'SIZE' => filesize_h(filesize($file)));
    if ($old_rev && $conf['mediarevisions']) {
        $trep['OLD'] = ml($id, "rev={$old_rev}", true, '&', true);
    } else {
        $trep['OLD'] = '---';
    }
    $mail = new Mailer();
    $mail->to($conf['notify']);
    $mail->subject($lang['mail_upload'] . ' ' . $id);
    $mail->setBody($text, $trep);
    return $mail->send();
}
 /**
  * Transmit the message via email to the address on file.
  * As a special case, configure the mail settings to send only via text.
  */
 public function transmitMessage($message, $force = false)
 {
     if (!$this->canUse() && !$force) {
         return false;
     }
     $to = $this->attribute->get("twofactoremail", "email");
     // Create the email object.
     $mail = new Mailer();
     $subject = $conf['title'] . ' login verification';
     $mail->to($to);
     $mail->subject($subject);
     $mail->setText($message);
     $result = $mail->send();
     // This is here only for debugging for me for now.  My windows box can't send out emails :P
     #if (!result) { msg($message, 0); return true;}
     return $result;
 }
 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;
 }
 /**
  * Transmit the message via email to the address on file.
  * As a special case, configure the mail settings to send only via text.
  */
 public function transmitMessage($message, $force = false)
 {
     if (!$this->canUse() && !$force) {
         return false;
     }
     $to = $this->_settingGet("email");
     // Create the email object.
     $mail = new Mailer();
     $subject = $conf['title'] . ' login verification';
     $mail->to($to);
     $mail->subject($subject);
     $mail->setText($message);
     $result = $mail->send();
     return $result;
 }