当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

4.1Zend_Mail:构筑邮件送信表单

9/17/2020 9:43:31 PM 人评论

4.1Zend_Mail:构筑邮件送信表单

4.1 Zend_Mail:构筑邮件送信表单

2.9节“构筑邮件送信的调查表单(Form)”里介绍了构筑简单的文字邮件的送信表单。本节将进一步介绍怎么构筑画面更漂亮,并具有添加附件功能的邮件送信表单。

通过浏览器发送邮件,以及具有发送附件功能的邮件,由于有比文字邮件更大,以及容易感染病毒的原因,很多人都敬而远之。也因为上述的原因,注意不要滥用Web邮件,但是只要注意到这些,Web邮件还是一种很有效的通信手段。

alt

alt

本例要点

在2.9节中,我们使用PHP的邮件送信的标准函数mb_send_mail。的确使用mb_send_mail函数,在实现单纯的只含有文字的邮件时,只用很简单的代码就可以实现。但是如果想以HTML形式发送邮件,或需要给邮件添加附件时,标准的函数mb_send_mail就没法实现了。

本节应用Zend Framework的构件(component)之一——Zend_Mail来实现上述功能,利用Zend_Mail可以以简单的代码实现如此丰富的功能。

目录结构

alt

本例代码

alt

richmail.php对自己提交request,具体的处理在33行到49行。

alt

为避免邮件中出现中文乱码现象,发送前必须利用此函数进行字符代码的转换(转换为GB 2312)。

alt

单击“送信”按钮后,34行至48行进行送信处理。

alt

设定邮件送信用SMTP服务器。使用Zend_Mail_Transport_Smtp类来指定SMTP服务器,参数中指定SMTP服务器的主机名。

使用setDefaultTransport方法将生成的Zend_Mail_Transport_Smtp对象在Zend_Mail对象中登录,这样就完成了SMTP服务器的设置。

alt

送信信息的管理是Zend_Mail的主要工作。可以在构造体中指定字符代码(如UTF-8等),也可以省略。

alt

addTo方法指定对方(接受方)邮件地址,而setFrom方法设定送信者的邮件地址(实际运行时请务必换上自己的邮件地址)。想指定CC与BCC时,请使用addCc或addBcc方法。

上述方法都可以指定对象的姓名(接受者名、送信者名)。但是,如果姓名中含有汉字等多字节文字时,请务必将其字符代码转换为GB2312。

alt

setSubject方法与setBodyHtml分别设置邮件的题名与正文。这里是为了发送HTML形式的邮件的,如果只是发送纯文本邮件,请将setBodyHtml替换为setBodyText。

alt

生成邮件附件。createAttachment方法的参数指定为,通过file_get_contents函数读入的上传文件的临时文件。type与filename对应设定附件的MIME类型与文件名。

alt

送信准备完成后,使用send方法将生成的邮件送出。

alt

补充

运行实例时的注意事项

本节使用的Zend_Mail是Zend Framework的构件(component)之一,在运行本节的代码时,首先要检查一下Zend Framework是否可以使用。

如果你是严格按照本书第1章介绍的方法配置环境的话,Zend Framework已经可以使用了。

Zend_Mail构件的Bug

在本书成书前,Zend_Mail构件在多字节处理上还有些Bug,也就是,当送信者名里含有多字节字符时,接受时会出现乱码。

为解决这个问题,请将Zend/Mail.php文件的534行附近的代码做如下修改。

alt

邮件送信时需要认证的情况

根据所使用的SMTP服务器的不同,邮件送信时,有时需要认证。这时候,需要在类Zend_Mail_Transport_Smtp的构造函数的第2个参数中以联想数组的方式指定认证需要的信息。

alt

各个认证参数的意义见表4-1。

表4-1 Zend_Mail_Transport_Smtp构造函数中可指定的认证参数

alt

相关教程

共有条评论 网友评论

验证码: 看不清楚?