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: \r\n

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: