我配置了我的 sendmail.ini 和 php.ini 但我无法使用 php 中的 mail() 函数发送电子邮件
Posted
技术标签:
【中文标题】我配置了我的 sendmail.ini 和 php.ini 但我无法使用 php 中的 mail() 函数发送电子邮件【英文标题】:I configured my sendmail.ini and php.ini but I can't send an email using mail() function in php 【发布时间】:2013-05-22 11:41:15 【问题描述】:这是我的sendmail.ini
文件:
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
auth_username=mymail@gmail.com
auth_password=****************
force_sender=mymail@gmail.com
发送电子邮件后,我的debug.log
文件如下所示:
13/05/27 20:46:36 ** Connecting to smtp.gmail.com:25
13/05/27 20:46:40 ** Connected.
13/05/27 20:46:42 << 220 mx.google.com ESMTP dr6sm30900757pac.11 - gsmtp<EOL>
13/05/27 20:46:42 >> EHLO ANKON-PC<EOL>
13/05/27 20:46:44 << 250-mx.google.com at your service, [202.134.13.131]
<EOL>250-SIZE
<EOL>250-8BITMIME<EOL>250-STARTTLS<EOL>250-ENHANCEDSTATUSCODES<EOL>250 ...<EOL>
13/05/27 20:46:44 ** Authenticating as mymail@gmail.com
13/05/27 20:46:44 >> STARTTLS<EOL>
13/05/27 20:46:45 << 220 2.0.0 Ready to start TLS<EOL>
13/05/27 20:46:45 >> QUIT<EOL>
13/05/27 20:46:46 << 5 1Q£q×:Y
ý‰KÿhÓ&ïË‹¶ð3Àm¼` ÿ # E A > „0‚€0‚é
13/05/27 20:46:47 << F
13/05/27 20:46:47 ** Disconnected.
13/05/27 20:46:47 ** Disconnecting from smtp.gmail.com:25
13/05/27 20:46:47 ** Disconnected.
13/05/27 20:46:47 ** Disconnected.
13/05/27 20:46:47 ** Connection Closed Gracefully.
但实际上这东西第一次起作用,但之后就不起作用了。 我在我的电脑上使用 xampp。 那么我应该怎么做才能发送电子邮件。 请有人告诉我。
【问题讨论】:
您正在尝试通过您自己的 sendmail 发送到 gmail.com,php 正在连接到您的 sendmail(本地主机)?你看过这里吗:***.com/questions/4948687/… 你不能只使用 gmail smtp,使用 Exim 设置你的 owm 邮件服务器 我试过这个,它第一次工作,但后来它不工作@AxelAmthor 现在出现“SSL 在此服务器上不可用”的错误。我该如何解决? @edwardmp - 一些邮件程序类,例如 phpMailer 实际上允许您使用 gmail smtp。 【参考方案1】:您不能简单地以这种方式指定像 gmail 这样的外部邮件服务器并期望它能够工作,即使使用正确的凭据也是如此。您根本无法使用 PHP mail()
函数实现此功能。
我的建议是完全放弃mail()
函数——它有很多缺点,这只是其中之一。
请下载phpMailer library。这是一个 PHP 类,它使通过 PHP 发送邮件变得更加非常简单。
特别是在您的情况下,它可以通过内置的 gMail 发送,这意味着您不需要弄乱您的服务器配置或设置自己的邮件中继或类似的东西;只需关注this example 让 phpMailer 与您的 gMail 帐户一起工作,您应该会很快启动并运行。
希望对您有所帮助。
【讨论】:
【参考方案2】:尝试: smtp_ssl=none
; SMTPS (SSL) 支持
; auto = 对端口 465 使用 SSL,否则尝试使用 TLS
; ssl = 始终使用 SSL
; tls = 始终使用 TLS
; none = 永远不要尝试使用 SSL
【讨论】:
【参考方案3】:您需要将您的 SMTP 服务器/sendmail 配置为完整的中继主机。由于 sendmail 很老而且配置起来非常非常复杂,您应该考虑 Exim(正如 @edwardmp 建议的那样)或 postfix。
实际上,您的安装缺少 SSL 等部分,通过这也意味着您需要生成服务器证书、证书颁发机构等,并且可能还缺少其他部分。
问题是,网络上的某个地方是否有中继主机并且可以访问,以及您是否可以使用它(您的公司如何发送电子邮件?)
【讨论】:
【参考方案4】:-
右键单击 sendmail.exe
财产
兼容性
更改所有用户的设置
勾选兼容模式。
【讨论】:
以上是关于我配置了我的 sendmail.ini 和 php.ini 但我无法使用 php 中的 mail() 函数发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章