发邮件

概述

Seagull提供了SGL_Emailer类用于发送邮件. 它是通过封装PEAR::mail实现的,因此它有许多可用的选项.

Seagull提供的模块中,有相当多使用SGL_Emailer来发邮件的例子.

例子

发送一个HTML邮件:

    $options = array(
        'toEmail'       => $conf['email']['info'],
        'toRealName'    => 'Admin',
        'fromEmail'     => $oContact->email,
        'fromRealName'  => $contacterName,
        'replyTo'       => $oContact->email,
        'subject'       => 'Contact Enquiry from ' . $conf['site']['name'],
        'type'          => $oContact->type,
        'body'          => $oContact->comment,
        'template'      => SGL_MOD_DIR . '/' . $this->module . '/templates/' .
            $_SESSION['prefs']['theme'] . '/email_contact_us.php',
    );
    $message = & new SGL_Emailer($options);
    $message->prepare();
    return $message->send();

为email添加多个附件

  • requires >= Seagull 0.6.3

你可以为单个email添加多个附件。当你给$option 'filepath'传递一个数组,数组中的每个元素将被作为附件添加到邮件。当参数$options 'mimetype'是一个和'filepath'参数具有同样个数的元素时,每个附件将会有各自独立的mimetype值,否则所有的附件将使用同一个mimetype值。

下面这个例子每个附件有各自的mimetype:

$options = array( … 'filepath' ⇒ array('path/to/gif','path/to/jpg'), 'mimetype' ⇒ array('image/gif','image/jpeg'), );

下面这个例子所有的附件具有一样的mimetype:

$options = array( … 'filepath' ⇒ array('path/to/file1','path/to/file2'), 'mimetype' ⇒ 'text/plain', );

使用SGL_Emailer2中改进的功能

  • requires >= Seagull 0.6.5

使用SGL_Emailer2你可以同时以文本和html发送email,或者你可以将你的htmlemail自动转化成文本。,转化索要你安装了Horde的Text_Filter库,你可以使用下列命令安装这个库:

$ pear channel-discover pear.horde.org $ pear install horde/horde_text_filter

例子

PHP code

        ...
        // delivery options
        $aDeliveryOpts['toEmail']  = 'your data here';
        $aDeliveryOpts['toRealName'] = 'your data here';
        ...
        $aDeliveryOpts['fromEmail'] = 'your data here';.
        $aDeliveryOpts['fromRealName']  = 'your data here';
 
        // template vars
        $aTplOpts['var1'] = 'val1';
        $aTplOpts['var2'] = 'val2';
        $aTplOpts['var3'] = 'val3';
 
        // obligatory template options
        $aTplOpts['moduleName']    = 'mymodule';
        $aTplOpts['htmlTemplate']  = 'mytemplate.html';
        $aTplOpts['textTemplate'] = 'mytemplate.txt';
 
        // optionally send emails to queue for later sending
        $aQueueOpts['sendDelay'] = 'your send delay';.
        $aQueueOpts['groupId']  = 'your group';
        $aQueueOpts['userId']  = 'your user ID';
        $aQueueOpts['batchId']  = 'your batch ID';
 
        $ok = SGL_Emailer2::send($aDeliveryOpts, $aTplOpts, $aQueueOpts);
<php>
 
HTML template
 
<code>
...
<p>
    Var1: {var1}<br />
    Var2: {var2}<br />
    Var3: {var3}<br />
</p>
<p>
    Bye!
</p>
...

Text template

...
$bodyTxt = <<< TXT
    ...
    Var1: {$aParams['var1']}
    Var2: {$aParams['var2']}
    Var3: {$aParams['var3']}

    Bye!
    ...
TXT;
...

更多信息:

  • 如果你想指定email格式,你可以使用相关的类常量, MODE_TEXT_ONLY or MODE_HTML_ONLY or MODE_HTML_AND_TEXT, eg:
    $aDeliveryOpts['mode'] = MODE_TEXT_ONLY;
  • 如果你选择MODE_HTML_AND_TEXT但没提供一个文本模板,SGL_Emailer2会通过转化HTML到文本来创建email.
  • 如果你想发送大量的email(>10000),你可以安装email queue模块,SG默认带有该模块。它允许不在线发送email,并可以指定发送时间间隔,每个邮件的附件数目,批量发送并自定义邮件发送后台,默认是DB。
  • SGL_Emailer2允许你传递参数以必定默认的参数值, eg
     possible keys:
      * sendDelay
      * groupId
      * userId
      * batchId

这个参数是作为SGL_Emailer2::send可选的第三个参数, ie

$ok = SGL_Emailer2::send($aDeliveryOpts, $aTplOpts, $aQueueOpts);
 
howto/sendingemails.txt · 最后更改: 2010/05/30 00:21 (外部编辑)
 
Except where otherwise noted, content on this wiki is licensed under the following license:GNU Free Documentation License 1.2