gpt4 book ai didi

php - 使用gmail smtp服务器发送电子邮件时smtp.gmail.com vs ssl ://smtp. gmail.com

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:28 28 4
gpt4 key购买 nike

根据 this

Gmail SMTP Server could also be used to relay messages from your device or application. You can connect to Gmail mail servers using SMTP, SSL/TLS. If you connect using SMTP, you can only send mail to Gmail or Google Apps users; if you connect using SSL/TLS, you can send mail to anyone.

If your device or application supports SSL - connect to smtp.gmail.com on port 465.

所以我尝试在端口 465 上连接到 smtp.gmail.com。我收到以下错误:

Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.

一些 code使用另一个地址“ssl://smtp.gmail.com”。

当我也在端口 465 上使用 ssl://smtp.gmail.com 时,我的应用程序现在可以正常工作。

  • 如果后者也使用 ssl,那么 ssl://smtp.gmail.com 和 smtp.gmail.com 之间有什么区别?
  • 为什么我们不能在没有 SSL 的情况下向其他域发送电子邮件?出于安全目的,这是否仅由 gmail 完成?

我对此非常陌生。谁能解释一下?如果重要的话,我正在使用 php。

最佳答案

在主机名前加 ssl:// 和不加前缀的区别在于底层流是否为 wrapped。通过 OpenSSL,或以纯文本说话。

当您连接到端口 465 上的 Gmail 时,它希望客户端使用 TLS 加密。您看到的错误消息很可能是连接到服务时的一般结果,该服务在尝试以纯文本格式写入和读取数据时需要加密连接。

当您使用 ssl:// 包装器连接到支持 TLS 或 SSL 的服务时,PHP 会为您施展魔法。它允许您以与未加密连接相同的方式在流上读取和写入(例如使用 fread/fwrite),并且所有握手、加密和解密都在后台完成,只需为主机添加前缀使用 ssl 包装器。

至于第二个问题,很可能与安全有关。为了中继(将邮件发送到另一个域),您需要通过 SMTP 进行身份验证,这永远不能以明文形式完成,而您可以使用未加密的连接连接到端口 25 并在不进行身份验证的情况下将邮件发送给 Gmail 用户(这是最外面的邮件服务器会在其用户之一向 Gmail 发送邮件时执行此操作)。但从技术上讲,没有什么可以阻止他们允许您使用未加密的连接发送邮件,甚至可以使用 Gmail 凭据进行身份验证(这称为开放中继,通常被垃圾邮件发送者严重滥用)。

您可以通过阅读有关 SMTP 协议(protocol)、STARTTLS 命令和一般 TLS 加密的内容来了解​​有关第一个问题的更多信息。 STARTTLS 允许客户端通过未加密的连接连接到邮件服务器,然后协商(升级)连接以使用加密,另一方面,到端口 465 的连接期望 TLS 握手发生一旦建立连接,在任何协议(protocol) (SMTP) 通信发生之前。

关于php - 使用gmail smtp服务器发送电子邮件时smtp.gmail.com vs ssl ://smtp. gmail.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com