【问题标题】:Why is php mail not sent when I have true boolean value and seems to be OK为什么当我有真正的布尔值并且似乎没问题时没有发送 php 邮件
【发布时间】:2012-11-15 21:24:27
【问题描述】:
$res=  mail('myemailaddress@live.com', 'Email verification ','This is my own text');

print $res;

我已尝试将邮件发送到我的电子邮件 ID。我有 1 页。看起来有效,但实际上没有用。

php.ini:

define_syslog_variables  = Off

[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 = mymailaddressishere@live.in

; XAMPP IMPORTANT NOTE (1): If XAMPP is installed in a base directory with spaces (e.g. c:\program files\xampp-portable) 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 = "\"\xampp-portable\sendmail\sendmail.exe\" -t"

; XAMPP: Comment out this if you want to work with mailToDisk, It writes all mails in the \xampp-portable\mailoutput folder
sendmail_path = "\xampp-portable\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 = "\xampp-portable\php\logs\php_mail.log"

[SQL]

我想知道如何追踪我的代码发生了什么。如果我需要在本地 php 服务器中进行一些设置,请告诉我。

我正在使用 xampp 便携式“以管理员身份运行”。

【问题讨论】:

  • 来自文档:“请务必注意,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地。”您的PHP 代码真的再简单不过了,但出于某种原因,PHP 之外的邮件代理并没有传递消息。或者它可能在目的地的垃圾邮件文件夹中被捕获。谁知道。如果是邮件传递问题,这个问题可能会在serverfault 上得到更好的调查。
  • 为什么要同时配置 SMTP 和 sendmail 路径?

标签: php email xampp sendmail.exe


【解决方案1】:

我不能使用评论系统,所以我只能在这里发布。但我认为这不是您要寻找的答案。

XAMP 可能无法发送电子邮件。大多数 localhost 测试环境,例如 xamp 或 wamp 都无法发送电子邮件。他们需要首先设置为邮件服务器。您可以尝试将它们设置为邮件服务器,但我认为更容易获得免费托管(带有一些“丑陋”的子域名),然后将您的脚本放在那里并尝试发送邮件。

【讨论】:

    【解决方案2】:

    我说这话有点危险:您没有安装 SMTP 服务器,更不用说运行了。仅仅因为您的 php.inimail() 将使用 SMTP @ localhost:25 并不意味着它已安装并正在运行。 mail() 函数将返回 true,即使它实际上并没有发送这封信。

    如果您已经安装了 SMTP 服务器(目前尚未与 XAMPP 一起打包)并运行它,那么我深表歉意。请发布您正在使用的 SMTP 服务器和您的服务列表,以确保它正在运行。这样就更容易诊断了。

    编辑

    刚刚在我的电脑上测试,没有设置 SMTP 服务器:

    $a= @mail('sales@ellsworthpublishing.com', 'asdf', 'asdf');
    if(!$a)
        echo'False';
    else
        echo'True';
    

    输出是True

    【讨论】:

    • 我有 99.9% 的把握,如果 SMTP 服务器没有运行并且 PHP 被配置为使用它,mail() 实际上会返回 false
    • 刚刚在我的电脑上测试过。没有 SMTP。返回true
    • 我对xamp不太了解,但是afaik只有windows连接到smtp,因为它没有sendmail。
    【解决方案3】:

    你的文件中有一行写着:

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

    在我的 XAMPP 安装中,我发现注释是错误的。如果您想使用 mailToDisk,您实际上必须取消注释该行,邮件实际上会写入 /tmp/mailoutput。

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      相关资源
      最近更新 更多