php邮件发送的两种方式区别,php邮件发送的两种方式是什么

php邮件发送的两种方式区别,php邮件发送的两种方式是什么,php邮件发送的两种方式

本文是按照用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发邮件的两种方式,都有自己的思考过程。希望对大家的学习有帮助。

php邮件发送的两种方式区别,php邮件发送的两种方式是什么