提问者:小点点

PHP无法将邮件发送到webmail


我有一个在网站上的联系方式,如果你提交它将发送到网络邮件。例子:

    $isi_pesan = $message;
    $additional_headers = "From: ".$email."" . "\r\n" . "Reply-To: $email";   
    $subject = 'Pesan untuk engineering.co.id';

    $to = 'info@engineering.co.id';
 // $to = 'dy_qie21@yahoo.com'; //this works

    if(mail($to, $subject, $isi_pesan, $additional_headers))
        echo '<div class="success-msg">Success !</div>';
    else
        echo '<div class="error-msg">Failed !</div>';

我得到的信息是“成功!”但我在收件箱的网络邮件里什么都没有。如果$to不是webmail,PHP邮件就可以工作。那么,我必须更改什么设置才能使邮件在webmail中工作?提前谢谢。


共3个答案

匿名用户

你看过垃圾邮件文件夹了吗?看看这个PHP类

https://github.com/Synchro/PHPMailer

$mail = new PHPMailer;

$mail->From = 'from@example.com';
$mail->FromName = 'Mailer';
$mail->AddAddress('ellen@example.com');               // Name is optional
$mail->IsHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->Send()) {
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;
}

echo 'Message has been sent';

匿名用户

PHP本身并不传递邮件。它只是把它交给当地的邮件递送系统。因此,请检查您的发送邮件服务器的日志。也许这封邮件被当作垃圾邮件拒绝了。也许是因为greylisting等原因被推迟了。。。

用外行的话说,PHP的mail()相当于走过街区,把一封信扔进邮箱。一旦这封信放进盒子里,PHP的工作就完成了,它将报告true。然后邮局必须来取信,把它送到分拣厂,然后再把它寄出去(飞机?卡车?船?)。目的地的邮局必须接受投递,做更多的分拣,把信放进卡车,投进某人的邮箱,等等。。。

在总体方案中,PHP的mail()函数完成了大约0.1%的邮件传递过程,您已经证明它是成功的。因此,开始分析其他99.9%的问题所在。

匿名用户

如果这是您的确切代码,那么您将在此处用第二个地址覆盖第一个to地址:

$to = 'info@engineering.co.id';
$to = 'dy_qie21@yahoo.com'; //this works

如果要同时向这两个用户发送,则需要执行以下操作:

$to = 'info@engineering.co.id, dy_giel21@yahoo.com';