本文是按照用php实现邮件发送的思路整理出来的文章,在遇到不同的问题时给出了不同的解决方法。感兴趣的朋友可以参考一下。
本文的主要内容是使用PHP发送电子邮件,可以概括为以下两种方法:
一、使用PHP内置的mail()函数
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$ to= test @ 163.com//收件人
$ subject= Test//主题
$message=这是一封测试邮件!;//正文
邮件($收件人,$主题,$消息);
结果被直接报告为错误,如下所示:
警告:mail() [function.mail]:无法连接到“localhost”端口25的邮件服务器,请验证php.ini中的“SMTP”和“smtp_port”设置,或者在第10行使用ini _ set()inD:/www/Zend/email/email . PHP
分析原因:
本地需要SMTP服务器,以下代码已更改:?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
$ to= test @ 163.com//收件人
$ subject= Test//邮件主题
$message=这是一封测试邮件!;//电子邮件正文
ini_set(SMTP , SMTP . 163 . com );//传出SMTP服务器
ini_set(smtp_port ,25);//传出SMTP服务器端口
ini_set(sendmail_from , admin @ 163 . com );//发件人的电子邮件地址
邮件($收件人,$主题,$消息);
结果仍然是错误的:
警告:mail() [function.mail]: SMTP服务器响应:需要553认证,smtp2,dngowkd 7 V5 btdo 9 nnplvba-. 1171 S2 1301220947 inD:/www/Zend/email/email . PHP第9行
分析原因:需要验证信息。验证信息怎么写?在哪里配置的?带着这些问题参考了一些技术文章后得出结论:使用mail()函数发送邮件,需要一个不需要SMTP认证就可以发送邮件的邮件服务器。但是目前的SMTP邮件服务器基本都需要验证,所以如果想用它发送邮件,只能在本地设置一个不需要验证的SMTP服务器。
搭建方法
:直接用windows自带的IIS,或者从网上下载其他SMTP服务器软件。结论:要使用mail()函数发送邮件,必须有一个不需要验证的SMTP服务器。这样配置工作会多一点,但是更好用,就几行代码。
二、使用封装SMTP协议的邮件类
这种方法比较常见,尤其是对于没有服务器,从网上购买虚拟主机的广大学生来说。第一种方法不现实,要自己用SMTP协议发邮件。
但是如果要完成这项工作,需要对SMTP协议有一定的了解。喜欢自己动手的同学可以自己写一个,喜欢用的可以从网上下载。有很多。
不过我推荐使用
PEAR扩展中的Mail类
,可以支持纯文本和HTML消息。每个字段都可以编码,正确的配置不会造成中文乱码;附件等等都可以支持。现在使用
功能强大:
命令可以快速安装服务器,没有足够服务器权限的同学也可以直接下载该类的PHP源代码并收录。pear install Mail
邮件类依赖于Net/SMTP.php和Mail/mime.php需要单件下载,使用时包含在单件中。让我给你一个在邮件类中如何发送邮件的例子。互联网上的其他SMTP邮件类也有类似的使用方法。你可以参考:
?服务器端编程语言(Professional Hypertext Preprocessor的缩写)
//Pear邮件扩展
require _ once( mail . PHP );
require _ once( Mail/mime . PHP );
require _ once( Net/SMTP . PHP );
$ smtpinfo=array();
$ SMTP info[ host ]= SMTP . 163 . com ;//SMTP服务器
$ smtpinfo[ port ]= 25 ;//SMTP服务器端口
$ smtpinfo[ username ]= username @ 163 . com ;//发件人的电子邮件地址
$ smtpinfo[ password ]= password ;//发件人的电子邮件密码
$ smtpinfo[ time out ]=10;//网络超时,秒
$ smtpinfo[ auth ]=true;//登录验证
//$ smtpinfo[ debug ]=true;//调试模式
//收件人列表
$ mail addr=array( receiver @ 163 . com );
//发送方显示信息
$ from= Name username @ 163.com
//接收方显示信息
$to=内爆(,,$ mailAddr);
//邮件头
$subject=这是一封测试邮件;
//电子邮件正文
$content=h3随便写点东西/H3 ;
//电子邮件正文类型、格式和编码
$ content type= text/html;charset=utf-8 ;
//换行符Linux: n Windows: rn
$ crlf= n
$ mime=new Mail _ mime($ crlf);
$ mime-setHTMLBody($ content);
$ param[ text _ charset ]= utf-8 ;
$ param[ html _ charset ]= utf-8 ;
$ param[ head _ charset ]= utf-8 ;
$ body=$ mime-get($ param);
$ headers=array();
$ headers[ From ]=$ From;
$ headers[ To ]=$ To;
$ headers[ Subject ]=$ Subject;
$ headers[ Content-Type ]=$ Content Type;
$ headers=$ mime-headers($ headers);
$smtp=Mail:factory(smtp ,$ SMTP info);
$mail=$smtp-send($mailAddr,$headers,$ body);
$ SMTP-disconnect();
if (PEAR:isError($mail)) {
//发送失败
“回显”电子邮件发送失败:“”。$mail-getMessage()。 n ;
}
否则{
//发送成功
回声成功! n ;
}
如果网上找到的SMTP类都是高度封装的,会比上面的好用,但是使用方法都差不多。
结论:这种方式不需要安装任何软件,只需要包含一个PHP类,然后多写几行配置代码就可以了。而且网上有很多样例代码,复制下来然后修改一些个别参数,非常方便。建议使用这种方法。
这是用PHP发邮件的两种方式,都有自己的思考过程。希望对大家的学习有帮助。