我在这里读过一些帖子,有人设法使用 gmail 的 smtp 服务器从 php 脚本发送消息。
因此如果 php 发送一封邮件到[电子邮件保护]它看起来像这样:
方案一:
- php 告诉 sendmail(smtp 服务器)发送邮件
- sendmail 将邮件发送到 gmail 的 smtp 服务器
- gmail 的 smtp 服务器将邮件发送到 hotmail 的 smtp 服务器
所以现在我想知道,为什么要使用 gmail 的 smtp 服务器发送邮件?直接将消息从 sendmail 发送到 hotmail 的 smtp 服务器不是更好吗?
方案 2:
- php 告诉发送到本地 sendmail
- sendmail 发送到 hotmail 的 smtp 服务器
方案三:
- php 将邮件发送到 gmail 的 smtp 服务器
- gmail 的 smtp 服务器发送到 hotmail 的 smtp 服务器。
方案四:
- php 将消息发送到 hotmail 的 smtp 服务器。(为什么这不起作用?为什么有一个中间 smtp 服务器(实际上充当纯客户端)发送到另一个 smtp 服务器?
如果我错了,请纠正我,但发送一封邮件不就只需要两个 smtp 服务器、发件人和收件人(在本例中是 hotmail)之间的通信吗?
我仍然看不到这里的图片,也看不到发送邮件时发生/需要发生的事情。我知道什么是 MTA 和 MDA。但没有人清楚地解释过这一点,所以人们可以了解它是如何工作的。
如果有人能阐明这个令人困惑的领域那就太好了!
答案1
我猜它设置得并不像你说的那样。相反,它应该使用 PHP SMTP 库,而不使用 sendmail。要使它工作,您需要将登录信息放入 gmail 帐户的 php 中,它将直接与其通信。我猜您可以让 sendmail 使用 gmail 作为智能主机,以便它中继电子邮件,但除非您有很多不同的 PHP 应用程序,否则 PHP 库对我来说更有意义。
如果不是这样(不需要身份验证),gmail 将运行所谓的开放中继,垃圾邮件发送者将使用它向人们发送大量垃圾邮件。
使用 gmail 而不是 sendmail 本身与 hotmail 通信的原因是您不必处理运行电子邮件服务器的问题。他们将确保 gmail 用户能够将邮件发送到 hotmail 等地方而不会被标记为垃圾邮件。如果您自己运行 send mail,您将不得不自己完成所有这些工作。
最后,它被称为 SMTP 服务器(简单邮件传输协议),因为它的作用是转会服务器之间的电子邮件(发送和接收,但不存储)。这称为 MTA(邮件传输代理)。存储和让电子邮件获取电子邮件的是 MDA(类似于 fetchmail)。您可以将 MTA 视为邮局,将 MDA 视为您的邮箱。这是一个电子邮件工作原理概述在维基百科上。