由于最近使用wordpress开发网站,有一个外贸询盘的功能用的是插件,但这个插件的验证码经常出问题。我就想把这个功能DIY一下,今天在看西部数码虚拟主机功能的时候,无意看到了php发邮件这个“phpmailer”,有个测试代码,我下载改了改,第一次失败,第二次就成功了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php include "class.phpmailer.php"; //包函邮件发送类 //邮件发送 function send_mail($frommail,$tomail,$subject,$body,$ccmail,$bccmail) { $mail = new PHPMailer(); $mail->IsSMTP(); // 经smtp发送 $mail->Host = "smtp.163.com"; // SMTP 服务器 $mail->SMTPAuth = true; // 打开SMTP 认证 $mail->Username = "xiebit@163.com"; // 用户名 $mail->Password = "**********"; // 密码 $mail->From = $frommail; // 发信人 $mail->FromName = "xiebit"; // 发信人别名 $mail->AddAddress($tomail); // 收信人 if(!empty($ccmail)){ $mail->AddCC($ccmail); // cc收信人 } if(!empty($bccmail)){ $mail->AddCC($bccmail); // bcc收信人 } $mail->WordWrap = 50; $mail->IsHTML(true); // 以html方式发送 $mail->Subject = $subject; // 邮件标题 $mail->Body = $body; // 邮件内空 $mail->AltBody = "请使用HTML方式查看邮件。"; return $mail->Send(); } $result= send_mail("xiebit@163.com","xiebit@gmail.com","test","test"); ?> |
测试代码可以在这个链接下载:http://downinfo.myhostadmin.net/mail/phpmail_test.rar(解压后上传到网站根目录,修改里面的send.php邮箱信息测试发信)
因为要用到SMTP邮件服务,需要自己提前准备一个邮箱,QQ、网易、Gmail、outlook都行,示例是用的QQ邮箱,但是我把我的QQ邮箱地址、账号密码改到源码之后,提示是“Could not authenticate”。出现这个问题有可能是账号密码不对,也可能是邮箱没开启SMTP服务,还有可能是邮箱异常,很显然我刚开通的这个功能,以上三个问题都不可能存在。
最终,把邮箱密码改成开启SMTP服务时邮箱给的授权码,再测试就发送成功了。