【问题标题】:No mail received in inbox with XAMPP 1.8.0, MercuryMail and mail()使用 XAMPP 1.8.0、MercuryMail 和 mail() 在收件箱中没有收到邮件
【发布时间】:2012-10-17 12:42:49
【问题描述】:

我使用包含 Apache 2.4.2、PHP 5.4.5 和 MySQL 5.5 的 XAMPP 1.8.0 升级了我的本地服务器。 我通过运行 MercuryMail 使用 PHP mail() 函数发送邮件,但我的收件箱中没有收到电子邮件。
当我使用 Mozilla Thunderbird 进行测试时,发送邮件正常。并且 mail() 函数似乎没有发出错误。

我在我的 XAMPP 安装路径 D:\xampp\php 中检查了 php.ini。我在下面看到了这个

[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 filesD:\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 = "\"D:\xampp\sendmail\sendmail.exe\" -t"  

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the D:\xampp\mailoutput folder  
; sendmail_path = "D:\xampp\mailtodisk\mailtodisk.exe"  

我调整了一些 SMTP 设置组合。
我注释掉了主机和端口

; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury  
SMTP = localhost  
smtp_port = 25

我注释掉了 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 = "\"D:\xampp\sendmail\sendmail.exe\" -t"  

再次,我注释掉了另一个 sendmail_path 以使用 mailToDisk

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the D:\xampp\mailoutput folder  
sendmail_path = "D:\xampp\mailtodisk\mailtodisk.exe"  

似乎工作正常,但收件箱中没有收到邮件。 D:\xampp\mailoutput

中未找到任何内容

在 php 邮件日志 (D:\xampp\php\logs\php_mail.log) 中,我发现了几行可能表明正在发送邮件的日志行。

mail() on [D:\xampp\htdocs\....:127]: To: sithu@localhost.com -- Headers: MIME-Version: 1.0  Content-type: text/html; charset=text/html  Return-Path:Sithu <stk@localhost.com>  From: Sithu <stk@localhost.com>  Reply-To: Sithu <stk@localhost.com>  
mail() on [D:\xampp\htdocs\....:127]: To: test@localhost.com -- Headers: MIME-Version: 1.0  Content-type: text/html; charset=text/html  Return-Path:admin@localhost.com  From: admin@localhost.com  Reply-To: admin@localhost.com  
mail() on [D:\xampp\htdocs\....:127]: To: test@localhost.com -- Headers: MIME-Version: 1.0  Content-type: text/html; charset=text/html  Return-Path:Members <admin@localhost.com>  From: Members <admin@localhost.com>  Reply-To: Members <admin@localhost.com> 

我也尝试注释掉 sendmail_from,但没有成功。

; For Win32 only.  
; http://php.net/sendmail-from  
sendmail_from = postmaster@localhost  

我还缺少什么配置吗?

[编辑]
Mercury 邮件服务器正在运行。
每当我更新 php.ini 时,我都会重新启动 Apache 服务器。

【问题讨论】:

    标签: php email smtp xampp sendmail.exe


    【解决方案1】:

    我只需要配置D:\xampp\sendmail\sendmail.ini 默认情况下,它包含行

    smtp_server=mail.mydomain.com
    

    我不得不把它改成

    smtp_server=localhost
    

    无需在旧版本的 XAMPP 中进行配置。
    D:\xampp\php\php.ini[mail function]的正确配置是

    ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
    SMTP = 127.0.0.1
    smtp_port = 25
    
    ; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program filesD:\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 = "\"D:\xampp\sendmail\sendmail.exe\" -t"
    
    ; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the D:\xampp\mailoutput folder
    ; sendmail_path = "D:\xampp\mailtodisk\mailtodisk.exe"
    

    现在,我正在收件箱中接收邮件。请注意“D:\xampp\”是我的XAMPP安装路径。

    【讨论】:

    • 要在外部发送电子邮件,您还需要在 Mercury 设置中停用“不允许 SMTP 中继非本地邮件”。
    • @Krystian,感谢您的信息。
    • 太好了,谢谢。
    【解决方案2】:
    #GMAIL mit XAMPP 1.8.1 und sendmail
    [CODE]
    [sendmail]
    ; HOTMAIL
    smtp_server=smtp.gmail.com
    smtp_port=25
    smtp_ssl=tls
    tls_certcheck off
    error_logfile=error.log
    debug_logfile=debug.log
    auth_username= xxxx.xxxx@gmail.com
    auth_password=xxxxxxx
    
    
     this settings in php.ini   
     [mail function]
        ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
        ; SMTP = smtp.gmail.com
        ; smtp_port = 25
    
        ; For Win32 only.
        ; http://php.net/sendmail-from
        sendmail_from = xxxx.xxxx@gmail.com
    
        ; 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:\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:\xampp\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"
    

    【讨论】:

      【解决方案3】:

      确保mercury邮件服务器正在运行,默认不运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-24
        • 2016-05-11
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多