我已将旧项目切换到新服务器,其中我正在使用邮件发送邮件sendmail是我的邮件服务器,我正在使用php mail()函数,但无法正常工作
我正在测试的php代码是这个。
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "noreply@xyz.com";
$to = "panel1@mailinator.com";
$subject = "PHP Mail Test script";
$message = "This is a test to check the PHP Mail functionality";
$headers = "From:" . $from;
$val = mail($to,$subject,$message, $headers);
echo "Test email sents";
echo $val;
?>
邮件已被接收,但是它是从另一个这样的地址发送的。
noreply@xyz.interactivedns.com
邮件日志是这个
Oct 23 18:43:51 xyz2 sendmail[14831]: w9NIhp9R014831: from=www-data, size=177, class=0, nrcpts=1, msgid=<201810231843.w9NIhp9R014831@xyz.com>, relay=www-data@localhost
Oct 23 18:43:51 xyz2 sm-mta[14832]: w9NIhpIF014832: from=<www-data@xyz.com>, size=396, class=0, nrcpts=1, msgid=<201810231843.w9NIhp9R014831@xyz.com>, proto=ESMTP, daemon=MTA-v4, relay=www.xyz.com [127.0.0.1]
Oct 23 18:43:51 xyz2 sendmail[14831]: w9NIhp9R014831: to=panel1@mailinator.com, ctladdr=www-data (33/33), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30177, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (w9NIhpIF014832 Message accepted for delivery)
Oct 23 18:43:53 xyz2 sm-mta[14835]: w9NIhpIF014832: to=<panel1@mailinator.com>, ctladdr=<www-data@xyz.com> (33/33), delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120396, relay=mail.mailinator.com. [23.239.11.30], dsn=2.0.0, stat=Sent (Ok)
如果我使用gmail id,则即使在垃圾邮件箱中,邮件也完全无法传递
我在这里可以做什么?
答案 0 :(得分:1)
要回答您的问题...
似乎您丢失了我不久前在类似项目中使用的一些标头。尝试将您的 $ header 行替换为以下内容:
$message = wordwrap($message , 70);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
现在,提个建议...
我顽固地拒绝其他选择,而苦苦挣扎着原生PHP mail()函数。相信我,使用PHPMailer之类的东西会节省很多时间和麻烦。当我最终放弃并实现它(这比我想象的要容易得多)时,我通过mail()解决的所有问题都消失了。除非您愿意编写自己的复杂邮件库,否则请考虑使用PHPMailer或类似的工具。