通过phpmailer类来发送邮件。
一路遇到不少问题,看似简单,却花费了一大把工夫。
首先smtp和pop3两个概念需要了解。
提供电子邮件服务的网站都会有smtp服务器和pop3服务器。
SMTP(Simple Mail Transfer Protocol)简易邮件传输通讯协议 SMTP是互联网上的一种通讯协议,主要功能是用在传送电子邮件,当我们通过电子邮件程序,寄E-mil给另外一个人时,必须通过SMTP通讯协议,将邮件送到对方的邮件服务器上,等到对方上网的时候,就可以收到你所寄的信。简单理解为寄信的。
POP(Post Office Protocol)邮局通讯协定 POP是互联网上的一种通讯协定,主要功能是用在传送电子邮件,当我们寄信给另外一个人时,对方当时多半不会在线上,所以邮件服务器必须为收信者保存这封信,直到收信者来检查这封信件。当收信人收信的时候,必须通过POP通讯协定,才能取得邮件。简单理解为收信的。
在用phpmailer类过程中,报过此错误,时区错误:
PHP Warning: date() [function.date]: It is not safe to rely on the system's timezone
主要原因是时间有问题,php5.3版本以上会有的问题,将时间本地化一下就即可;
1,date_default_timezone_set('PRC'); /设置下时区
2,修改php.ini。打开php5.ini查找date.timezone 去掉前面的分号修改成为:date.timezone =PRC
重启服务器。。。
function send_mail($mail,$title,$content){ //设置时区 date_default_timezone_set('PRC'); require("./PHPMailer/class.phpmailer.php"); //class.phpmailer.php还依赖于class.smtp.php $m=new PHPMailer(); $m->IsSMTP(); // 启用SMTP $m->Host = "smtp.sina.cn"; //SMTP服务器 $m->SMTPAuth = true; //开启SMTP认证 $m->Username = "username"; // SMTP用户名 $m->Password = "*****"; // SMTP密码 $m->From = "username@sina.cn"; //发件人地址和用户名一致 $m->FromName = "发件人"; //发件人 $m->AddAddress($mail,''); //添加收件人 $m->IsHTML(true); // 是否HTML格式邮件 $m->Subject=$title; $m->Body=$content; if(!$m->Send()) { echo "发送失败. <p>"; echo "错误提示: " . $m->ErrorInfo; exit; } echo '发送成功'; } send_mail('6544533@qq.com','我是一个块兵','来自老百姓哈哈');
免费外部smtp服务器地址:smtp.qq.com smtp.sina.cn 报334错误,记得关闭万恶的杀毒软件。