Sendmail Wamp Php

Posted

技术标签:

【中文标题】Sendmail Wamp Php【英文标题】: 【发布时间】:2014-02-15 18:04:49 【问题描述】:

我整个上午都在互联网上搜索这个,试图找到一个解决方案。 我已经在 Windows 8.1 上安装了 wamp 服务器,我正在尝试使用 sendmail (http://glob.com.au/sendmail/) 和我的 gmail 帐户发送一些邮件

当我将 sendmail 配置为使用端口号 465 时,我总是收到此错误:Socket Error # 10060Connection timed out

如果我尝试使用端口号 587,我会在错误日志中看到这一行:连接正常关闭。但没有发送电子邮件。

这是我的 sendmail.ini 文件

[sendmail]
smtp_server=smtp.gmail.com
;I tried both: 587, 465
smtp_port=587
; I tried: "blank, auto ssl, tls, none"
smtp_ssl=
error_logfile=error.log
debug_logfile=debug.log
auth_username=myaccoun@gmail.com
auth_password=mypass
hostname=localhost

这是 php.ini 文件

[mail function]
smtp_port = 465
sendmail_path="C:\wamp\sendmail\sendmail.exe -t"
mail.add_x_header = On

ssl_module 在 apache 上有效,php 使用 php_open_ssl 和 php_socket 扩展。

我也尝试使用 stunnel 没有任何成功

编辑 27/01/2014

我在 sendmail.ini 上设置了 smtp_port = 465 和 smtp_ssl=ssl。另外,我设置 sendmail.exe 必须作为 Windows XP SP3 程序运行。之后,当我在 Windows 控制台上运行 sendmail.exe 时,它​​会正确发送电子邮件。但是,当 wamp 尝试发送邮件时,我在 sendmail 的错误日志中收到此错误。:Socket Error # 10060Connection timed out。

这是我用来测试 sendmail 的代码:

<?php
$email = "mymail@gmail.com";
$to = "mymail@gmail.com";
$subject = "Hi!";
$body = "Hi,How are you?";
$headers = 'From: ' .$email . "\r\n".'Reply-To: ' . $email. "\r\n".'X-Mailer: PHP/' . phpversion();
if (mail($to, $subject, $body, $headers)) echo("<p>Email successfully sent</p>");
else echo("<p>Email delivery failed</p>");
?>

【问题讨论】:

唯一看起来不对的是hostname=localhost 尝试将其注释掉。 感谢您的回复。我试过了,但没有解决问题。 :( 您可以尝试将此行添加到您的php.ini 的“[邮件功能]”部分。 mail.log = "c:\wamp\logs\php_mail.log" 这将打开邮件登录并可能帮助您识别问题。 完成后,再做一次测试,这是 php_mail.log 的内容:mail() on [C:\wamp\www\testSendMail.php:7]: To: myemail@gmail .com -- 标头:来自:myemail@gmail.com 回复:myemail@gmail.com X-Mailer:PHP/5.4.16。 sendmail 错误日志只有:Connection Closed Gracefully。 也许您没有在您的 php 中正确创建电子邮件。 【参考方案1】:

我终于找到了答案。

问题是 sendmail 必须以管理员身份运行。这是帮助任何人解决我的情况的解决方案。

    右键单击 sendmail.exe 属性 兼容性 更改所有用户的配置 作为 Windows XP SP 3 执行 以管理员身份执行

然后保存:D

在这种废话中损失了2天:(

【讨论】:

;(浪费了我的 1.5 小时 2 days lost in this nonsense :( 如果这不起作用,请为所有用户打开兼容模式。 :P 浪费了 2 年 :P 真的吗?就这么简单! WOW 正好浪费了 2 天!【参考方案2】:

问题是 sendmail 必须以管理员身份运行。这是帮助任何人解决我的情况的解决方案。

    右键单击 sendmail.exe 属性 兼容性 更改所有用户的配置 作为 Windows XP SP 3 执行 以管理员身份执行 如果您使用 gmail,则需要创建新密码“您的应用程序专用密码”

【讨论】:

第7步没看懂,能详细解释一下吗?【参考方案3】:

作为已接受答案的扩展:

如果您在 PHP 中运行发送邮件功能,可能会出现一个对话框,要求您以管理员身份运行“发送邮件”应用程序。单击“是”后,它将显示一个命令提示符对话框,并且不会发生任何事情,并且您的页面将挂起,直到命令提示符关闭。邮件函数甚至会返回“True”,但实际上没有发送任何消息。

要解决此问题,请执行与接受的答案相同的说明,并以管理员身份运行服务器(或 IDE),方法是:

1) 右键单击​​程序(例如服务器、ide、命令提示符)并单击“以管理员身份运行”

2) 或者右键程序>属性>兼容性>勾选以管理员身份执行

例如,如果您在内置服务器中使用 PHP,请以管理员身份运行命令提示符并正常启动服务器

C:\wamp\bin\php\php5.5.12\php.exe -S localhost:80 -t C:\Users\path\to\rootFolder

当然可以根据需要更改文件路径。

希望这对某人有帮助!!!在这上面花了很多时间!

【讨论】:

这拯救了我的一天!谢谢 我正在使用旧的 xampp 安装,正如 Yahya 所提到的,我将 C:\xampp\xampp-control.exe 设置为以管理员身份运行以及执行 Rumppelstinsk 提到的操作。我不再收到 sendmail 命令提示符弹出窗口和“Socket Error # 10060Connection timed out”。我的 sendmail error.log 中有错误。谢谢 尝试同时设置 /php/php.exe 以管理员身份运行。对我来说这很有效。【参考方案4】:

在 Windows 10 上,我发现唯一可行的方法是运行兼容性疑难解答。

    右键单击 sendmail.exe 点击“属性” 选择兼容性选项卡。 点击“运行兼容性疑难解答”。 让 windows 自动修复它。

【讨论】:

以上是关于Sendmail Wamp Php的主要内容,如果未能解决你的问题,请参考以下文章

Sendmail Wamp Php

本地主机上带有 hMailServer 的 PHP sendmail:535 身份验证失败

wamp sendmail 无法通过 smtp.gmail.com:587 发送电子邮件 [重复]

Laravel/XAMPP/Sendmail 不发送邮件

如何使用 PHP 从本地 wamp 服务器发送电子邮件?

怎么利用php发送邮件求详细教程