邮件功能不会发送电子邮件。错误

Posted

技术标签:

【中文标题】邮件功能不会发送电子邮件。错误【英文标题】:Mail function wont send eMail. ERROR 【发布时间】:2013-06-27 20:38:20 【问题描述】:

我想我现在尝试在 3 天内解决此问题,但似乎无法找到问题所在。

我使用 XAMPP 并使用此代码:

<?php

$to = "carl.j.97@live.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "carl.j.97@live.com";
$headers = "From: $from";
$res= mail($to,$subject,$message,$headers);
echo " $res Mail Sent.";
?>

当我进入该页面时,我收到一条错误消息:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set(

我在 xampp 中的 php.init 文件如下:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smpt.gmail.com
; http://php.net/smtp-port
smtp_port = 25

这是我所有的代码。

【问题讨论】:

正如错误所说,它无法连接到您的 SMTP 服务器。这基本上意味着您没有设置 SMTP 服务器。 XAMPP 附带 mercury,请对其进行一些研究。 Failed to connect to mailserver at "localhost" port 25 的可能重复项 XAMPP 使用 Mercury。这是一篇可能对***.com/questions/4486155/… 有帮助的帖子 @BadWolf 我试过你说的,现在它说: SMTP 错误:无法连接到 SMTP 主机。邮件程序错误:SMTP 错误:无法连接到 SMTP 主机。 【参考方案1】:

如果您在 XAMPP 或在 localhost 上运行的其他程序上运行此程序,请在 Google 上搜索使电子邮件服务正常工作所需的设置。您需要编辑一些文件并更改一些端口/客户端名称。

编辑: 您只需修改 2 个 ini 文件:php.ini 和 sendmail.ini

1)在php.ini中查找邮件函数(c:/xampp/php/php.ini)>>[邮件函数]

更改以下内容::

SMTP=smtp.gmail.com

smtp_port=587


sendmail_from = from@gmail.com

sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

注意:确保您为 sendmail_oath 指定的路径是有效的。在我的例子中,它是在 C 中。 保存您的更改。

2) 接下来修改sendmail.ini(c:/xampp/sendmail/sendmail.ini) 如下所示评论水银

# Mercury
#account Mercury
#host localhost
#from postmaster@localhost
#auth off

# A freemail service example
#account Hotmail
#tls on
#tls_certcheck off
#host smtp.live.com
#from [exampleuser]@hotmail.com
#auth on
#user [exampleuser]@hotmail.com
#password [examplepassword]

然后粘贴以下行:

account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from x@gmail.com
auth on
user x@gmail.com
password x

port 587

# Set a default account
account default : Gmail

再次保存您的更改。

使用下面的代码测试它是否正常工作!

<?php
$subject="Test mail";
$to="someone@whatever.com";
$body="This is a test mail";
if (mail($to,$subject,$body))
echo "Mail sent successfully!";
else
echo"Mail not sent!";
?>

注意,在上述配置中,发件人应使用 gmail 电子邮件服务,对于收件人,任何电子邮件服务都可以。

【讨论】:

【参考方案2】:

    您确定您编辑了正确的 php.ini 文件吗?

    您是否在编辑 php.ini 后重新启动了 Apache 服务器?

【讨论】:

是的,我很确定。嗯...停止/启动是否足够?那么是的【参考方案3】:

在您的生产服务器中运行此脚本。除非您在本地安装 SMTP 服务器,否则您无法从 localhost 发送电子邮件。

【讨论】:

我知道你的意思,但我不使用 localhost 来测试发件人

以上是关于邮件功能不会发送电子邮件。错误的主要内容,如果未能解决你的问题,请参考以下文章

梨邮件功能密件抄送不会发送

功能发送带有附件错误的电子邮件

让 Pylons 中止功能发送有关错误的异常电子邮件

在 PHPMailer 中调用 AddAttachment 不会发送邮件

烧瓶邮件属性错误:“功能”对象没有属性“发送”

使用 Django 的密码重置通知用户电子邮件无效