网站后台邮件无法发送问题
前几天给客户配置了一台香港linux服务器,上面有4个网站,唯独其中一个不能发送邮件,各种原因排查,折腾了我好几天。
情况描述:
1、在服务器上其他网站可以发送,唯独这个网站不能发送邮件;(确定网站问题!)
2、把网站放到其他服务器或本地环境测试都可以发送邮件;(难道不是网站的问题?)
问题原因:
香港服务器因为政策的原因做了些限制,导致邮箱不能自己发送给自己。
解决办法:
修改收件人邮箱和发件人邮箱不同
具体办法:
1、原始代码:
$headers = $cfg_adminemail;
$mailtype = 'TXT';
require_once(DEDEINC.'/mail.class.php');
$smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
$smtp->debug = true; //错误调试
$smtp->sendmail($cfg_smtp_usermail,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
由红色代码标注处可以看出:原始代码发件人和收件人是一样的。
2、修改后的代码
$getletter = "admin@imdupeng.cn"; //此处设置收件人邮箱
$mailtype = 'TXT';
require_once(DEDEINC.'/mail.class.php');
$smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
$smtp->sendmail($getletter,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);
添加一个收件人地址的变量$getletter,或者直接把发件人地址写到代码中,如下:
$mailtype = 'TXT';
require_once(DEDEINC.'/mail.class.php');
$smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password);
$smtp->sendmail(admin@imdupeng.cn,$cfg_webname ,$cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype);