PHP 使用smtp发送邮件,首先你要有个邮箱,可以是163的,可以是新浪的,不建议使用QQ的,因为在
测试邮件发送的时候,QQ经常判断邮件为垃圾邮件的!在开发之前要先设置邮箱开启smtp,一般在邮箱
设置中可以开启!好吧,以下是两个方法,由于是在thinkphp3.2.1的框架上写的,所有有些地方会写
得奇怪!如果套用到其他框架或低于thinkphp3.2的版本,都要做小量的修改
public function _sendmail($uemail,$subject,$body)
{
$msetting=M('smtp');
$config_mail = $msetting->find(1);
$mailend = explode('.',$config_mail['smtp_host']);
$fromemail = $config_mail['smtp_user'].'@'.$mailend[1].'.'.$mailend[2];//构建邮箱
$smtpserver = $config_mail['smtp_host'];//SMTP服务器
$smtpserverport = $config_mail['smtp_port'];//SMTP服务器端口
$smtpusermail = $fromemail;//SMTP服务器的用户邮箱
$smtpuser = $config_mail['smtp_user'];//SMTP服务器的用户帐号
$smtppass = $config_mail['smtp_pass'];//SMTP服务器的用户密码
$smtpemailto = $uemail;//发送给谁
$mailsubject = $subject;//邮件主题
$mailtime = date("Y-m-d H:i:s");
$mailbody = $body;//邮件内容
$utfmailbody = iconv("UTF-8","GB2312",$mailbody);//转换邮件编码
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
import ("Org.Util.Smtp");
$newsmtp = new \Smtp();
$smtp = $newsmtp->smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这
里面的一个true是表示使用身份验证,否则不使用身份验证.
$newsmtp->debug = FALSE;//是否显示发送的调试信息 FALSE or TRUE
$ret = $newsmtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $utfmailbody,
$mailtype);
}
public function index(){
$sendmail = "kitwujiajian@sina.com";
$zhuti = "test smtp";
$body = "hello world";
$this->_sendmail($sendmail,$zhuti,$body);
}
当调用index()方法时候,会自动发邮件到kitwujiajian@sina.com,主题是test smtp,内容是hello
world,_sendmail()方法中,我将smtp的资料保存到数据库了,分别需要输入服务器,端口,邮箱账号
,邮箱密码
我用的是新浪邮箱
新浪的服务器 smtp.sina.com
端口 25
有种邮箱的服务器地址和端口不一样,这些在百度可以查到出来
源码我已经上传到我个人git上:http://git.oschina.net/kakenwu/case.git
PHP 使用smtp发送邮件,首先你要有个邮箱,可以是163的,可以是新浪的,不建议使用QQ的,因为在
测试邮件发送的时候,QQ经常判断邮件为垃圾邮件的!在开发之前要先设置邮箱开启smtp,一般在邮箱
设置中可以开启!好吧,以下是两个方法,由于是在thinkphp3.2.1的框架上写的,所有有些地方会写
得奇怪!如果套用到其他框架或低于thinkphp3.2的版本,都要做小量的修改
public function _sendmail($uemail,$subject,$body)
{
$msetting=M('smtp');
$config_mail = $msetting->find(1);
$mailend = explode('.',$config_mail['smtp_host']);
$fromemail = $config_mail['smtp_user'].'@'.$mailend[1].'.'.$mailend[2];//构建邮箱
$smtpserver = $config_mail['smtp_host'];//SMTP服务器
$smtpserverport = $config_mail['smtp_port'];//SMTP服务器端口
$smtpusermail = $fromemail;//SMTP服务器的用户邮箱
$smtpuser = $config_mail['smtp_user'];//SMTP服务器的用户帐号
$smtppass = $config_mail['smtp_pass'];//SMTP服务器的用户密码
$smtpemailto = $uemail;//发送给谁
$mailsubject = $subject;//邮件主题
$mailtime = date("Y-m-d H:i:s");
$mailbody = $body;//邮件内容
$utfmailbody = iconv("UTF-8","GB2312",$mailbody);//转换邮件编码
$mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件
import ("Org.Util.Smtp");
$newsmtp = new \Smtp();
$smtp = $newsmtp->smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这
里面的一个true是表示使用身份验证,否则不使用身份验证.
$newsmtp->debug = FALSE;//是否显示发送的调试信息 FALSE or TRUE
$ret = $newsmtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $utfmailbody,
$mailtype);
}
public function index(){
$sendmail = "kitwujiajian@sina.com";
$zhuti = "test smtp";
$body = "hello world";
$this->_sendmail($sendmail,$zhuti,$body);
}
当调用index()方法时候,会自动发邮件到kitwujiajian@sina.com,主题是test smtp,内容是hello
world,_sendmail()方法中,我将smtp的资料保存到数据库了,分别需要输入服务器,端口,邮箱账号
,邮箱密码
我用的是新浪邮箱
新浪的服务器 smtp.sina.com
端口 25
有种邮箱的服务器地址和端口不一样,这些在百度可以查到出来
源码我已经上传到我个人git上:http://git.oschina.net/kakenwu/case.git