通过phpmailer发送邮件问题

通过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错误,记得关闭万恶的杀毒软件。

 

posted @ 2013-04-18 16:31  静心聆听  阅读(429)  评论(0编辑  收藏  举报