邮件无法在PHP中传递,即使SMTP服务器正在运行,并且PHP mail()返回true


mail cannot be delivered in PHP even SMTP server is running and PHP mail() returns true

我正在尝试使用PHP发送一封简单的邮件。我试着使用telnet来检查Mercury是否正在运行,它回答是的。同样,mail()返回true,因此我的脚本应该是可以的,但是邮件仍然无法发送,可能是什么原因导致了这个问题?

这是我的PHP代码:

$subject = "Simple mail";
$message = "Here is a test mail";
$to = "me@gmail.com";
$from = "me@test.com";
$header = "From: ".$from;
if(mail($to, $subject, $message, $header))
   print "success<br>";
else
   print "fail<br>";

以下是我的个人简历:

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
; SMTP = localhost
; smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost  
; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:'program filesC:'xampp) fakemail and mailtodisk do not work correctly.
; XAMPP IMPORTANT NOTE (2): In this case please copy the sendmail or mailtodisk folder in your root folder (e.g. C:'sendmail) and use this for sendmail_path.  
; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
;sendmail_path = "'"C:'xampp'sendmail'sendmail.exe'" -t"
; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the C:'xampp'mailoutput folder
sendmail_path = "C:'mailtodisk'mailtodisk.exe"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off
; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log = "C:'xampp'php'logs'php_mail.log"

因此,如果邮件服务器运行正确,脚本正确,那么导致邮件无法送达的唯一问题应该是邮件从未到达服务器,那么我该怎么办才能找出错误并解决它?

我已遵照重要通知做了一些改动。

在XAMPP中,您使用的是"C:''mailtodisk''mailtodisk.exe"而不是邮件服务器。它将所有邮件写入C:''xamplep''mailoutput文件夹,而不是发送到internet。