好吧,标题可能有点误导,但我找不到更好的方式来描述我的问题。我试图设置我的机器通过 phpmail()
函数发送电子邮件。结果我不能。我的 ISP 阻止了端口 25,所以没有运气。然后,出于好奇,我用一个 gmail 帐户设置了 Thunderbird,并向 hotmail 帐户发送了一条消息。这成功了。我很好奇 Thunderbird 是如何发送电子邮件的。
我在 Thunderbird 上的 gmail 帐户配置中看到它使用的是不同的端口,而不是 25。Thunderbird 似乎会自动设置这些值,这非常好。不久前,我想在 Thunderbird 上设置一个帐户,我必须手动输入 SMTP 服务器值和 IMAP/POP3 值,所以很高兴看到他们现在可以自动完成。
我还检查了邮件日志,没有任何变化。我想这没什么好说的,因为电子邮件不是由 postfix 的 sendmail 发送的,而是由 gmail 发送的。对吗?
好吧,我的问题是 Thunderbird 如何发送电子邮件?更重要的是,我可以做类似的事情以便能够从我的 php 脚本发送电子邮件吗?
我意识到这可能是一个“愚蠢”的问题,但我真的对此事一无所知。
既然我已经问了,我在哪里可以学到这个?学校里有教吗?也许教给计算机科学家?有什么好书可以让你开始了解电子邮件、SMTP、POP3 等美好世界吗?
答案1
要发送电子邮件,您的邮件客户端(Thunderbird 或 PHP 脚本)必须连接到 SMTP 服务器,该服务器可以通过互联网转发电子邮件,最终到达收件人的电子邮件服务器。SMTP 的标准端口是 25,但有时也可以使用其他端口(如 587 或 465),通常使用某种加密(如 SSL)。
使用哪个端口和加密取决于您使用的 SMTP 服务器。正如您所提到的,Thunderbird 可以通过尝试常用端口和协议来检测这一点。要通过 PHP 脚本通过 SSL 发送电子邮件,例如,您可以使用梨邮件扩大。
有关电子邮件协议如何运作的信息可能不应被视为常识。维基百科当然有一个概述,但正如你所说,如果你想深入了解,可能会推荐一本书。
答案2
我知道你已经解决了这个问题,但这是对原始问题的回答:雷鸟如何发送邮件?
Thunderbird 客户端捆绑了一些已知邮件提供商的连接信息,包括(如您所见)gmail、hotmail、yahoo 以及可能还有一些其他提供商。配置将知道:
- 传入协议 - POP3 或 IMAP(遗憾的是,Thunderbird 无法使用 Exchange:微软仅授权移动设备使用 Exchange 协议)
- 发送协议 - 几乎普遍使用 SMTP
- 服务所在位置的端口。
- 我需要向 SMTP 服务器进行身份验证吗?(SMTP 服务器通常现在需要身份验证,否则您会发送更多垃圾邮件)
- 加密?TLS/SSL?或者它支持 STARTTLS 吗?
因此,当您创建帐户时,您告诉 Thunderbird“[电子邮件保护]“。它看到这是 gmail.com,并使用配置所知道的有关该帐户的信息(imap.gmail.com 上的 IMAP/SSL、smtp.gmail.com 上的 SMTP/SSL 等)
当你发送邮件时,Thunderbird 知道它需要登录 SMTP 服务器,打开加密,然后使用非常具体的格式。
至于学习,检查射频功率控制电路,它们是通过网络传输的最终决定因素。此外,请查看 postfix、sendmail 和其他 MTA(邮件传输代理)的文档。