根据this
Gmail SMTP 服务器也可用于中继来自您的邮件
设备或应用程序。您可以使用以下方式连接到 Gmail 邮件服务器
SMTP、SSL/TLS。如果您使用 SMTP 连接,则只能将邮件发送至
Gmail 或 Google Apps 用户;如果您使用 SSL/TLS 连接,则可以发送
邮寄给任何人。
如果您的设备或应用程序支持 SSL - 连接到 smtp.gmail.com
在端口 465 上。
所以我尝试在端口 465 上连接到 smtp.gmail.com。我收到以下错误:
无法使用 PHP SMTP 发送电子邮件。您的服务器可能不是
配置为使用此方法发送邮件。
Some code使用另一个地址“ssl://smtp.gmail.com”。
当我也在端口 465 上使用 ssl://smtp.gmail.com 时,我的应用程序现在可以正常工作。
- 如果 ssl://smtp.gmail.com 也使用 ssl,那么 ssl://smtp.gmail.com 和 smtp.gmail.com 有什么区别?
- 为什么我们无法在没有 SSL 的情况下向其他域发送电子邮件?这只是gmail为了安全目的才做的吗?
我对此非常陌生。谁能解释一下吗?如果重要的话我正在使用 php。
主机名前缀之间的区别ssl://
如果没有它,底层流是否会被wrapped通过 OpenSSL,或以纯文本方式讲话。
当您通过端口 465 连接到 Gmail 时,它预计客户端将使用 TLS 加密。最有可能的是,您看到的错误消息是连接到期望加密连接的服务的一般结果,而该服务只是尝试以纯文本方式写入和读取数据。
当您使用 PHP 时,PHP 会为您带来魔力ssl://
用于连接到支持 TLS 或 SSL 的服务的包装器。它允许您以与未加密连接相同的方式在流上读取和写入(使用 fread/fwrite),并且所有握手、加密和解密都在后台完成,只需在主机上添加前缀即可使用 ssl 包装器。
至于第二个问题,很可能与安全有关。为了中继(将邮件发送到另一个域),您需要通过 SMTP 进行身份验证,这绝对不应该以明文形式完成,而您可以使用未加密的连接在端口 25 上进行连接,并将邮件发送给 Gmail 用户而不进行身份验证(这是最外面的情况)邮件服务器在其用户之一向 Gmail 发送邮件时执行此操作)。但从技术上讲,没有什么可以阻止他们允许您使用未加密的连接发送邮件,甚至使用 Gmail 凭据进行身份验证(这称为开放中继,通常被垃圾邮件发送者严重滥用)。
您可以通过阅读有关 SMTP 协议的内容来了解有关第一个问题的更多信息STARTTLS
命令和一般的 TLS 加密。STARTTLS
允许客户端通过未加密的连接连接到邮件服务器,然后协商(升级)连接以使用加密,而另一方面,到端口 465 的连接期望在连接建立后立即进行 TLS 握手发生任何协议 (SMTP) 通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)