Zend framework通过smtp发送邮件

官方的那个demo不太详细。这次正好自己测试了下,写下这个mark下,省得每次要用时都查看zf的源码。

代码样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
        //这里是从配置文件取出来D
        $smtp_conf = array ('from_name' => '荒野无灯',
                'username' => '登录名@ihacklog.com',
                'password' => '',
                'port' => 465,
                'ssl' => 'ssl',
                'email_from' => '发送者@ihacklog.com',
                'server' => 'smtp.gmail.com'
                );
       
        $from = $smtp_conf['email_from'];
        $from_name = $smtp_conf['from_name'];
        //Transport配置
        $config = array('auth' => 'login',
                'username' => '登录名@ihacklog.com',
                'password' => '啊啊这里是密码,不能看~~',
                'ssl'=>'ssl',
                'port'=>465,
        );
        $tr = new Zend_Mail_Transport_Smtp($smtp_conf['server'],$config);
        Zend_Mail::setDefaultTransport($tr);
        //默认值设置
        //Zend_Mail::setDefaultFrom($from, $from_name);
        //Zend_Mail::setDefaultReplyTo($from,$from_name);
       
        $to_name ='荒野无灯';
        $email = '哥@ihacklog.com';
        $subject= 'hello zend';
        $message = '<span style="color:#f00;">hello zend</span>';
        $mailer = new Zend_Mail;
        $mailer->setBodyHtml($message)
        ->setFrom($from,$from_name)
        ->addTo($email,$to_name)
        ->setSubject($subject)
        ->send();

注意事项

由于这里使用的ssl连接,PHP配置中要加载openssl库,不然使用时会出现如下提示:

Zend_Mail_Protocol_Exception [ 0 ]: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?

对于windows版php:

1
extension=php_openssl.dll

对于linux版:

1
extension=openssl.so

编译时–with-openssl–with-openssl=shared
可通过

查看。

关于SMTP 加密

普通服务器——可选加密(tls、ssl)
文艺服务器——强制加密
2B服务器——不支持加密

zf的transport中的ssl配置参数用于配置加密方式。

关于SMTP认证

普通青年:AUTH LOGIN
文艺青年:AUTH CRAM-MD5

zf的transport中的auth配置参数用于配置认证方式。可用参数值为: logincrammd5,注意后者中间没有连接符号。

In cryptography, CRAM-MD5 is a challenge-response authentication mechanism (hence “CRAM”) defined in RFC 2195 based on the HMAC-MD5 MAC algorithm. It is employed by some SASL implementations, and it is quite often supported by SMTP-AUTH Mail submission agents.

见:CRAM-MD5

SMTP Authentication

更多
One Response Post a comment

Leave a Reply

Note: You may use basic HTML in your comments. Your email address will not be published.

Subscribe to this comment feed via RSS