-1

这里是 Java 8,尽管我想这实际上更像是一个通用的 Exchange/SMTP 问题。

我从 GoDaddy 购买了一个域名和 Office 365 支持,因此通过它们获得了多个电子邮件地址。假设其中之一是support@myapp.example.com.

我正在编写一个 Java 8 应用程序,它允许用户向这个支持地址发送电子邮件(通过应用程序)。我可能会使用优秀的Simple Java Mail库,它封装了 Java Mail API。所以在我的应用程序的某个地方会有一些看起来这样的代码:

Email email = EmailBuilder.startingBlank()
  .to("MyApp Help Desk", "support@myapp.example.com")
  .withSubject("Support Ticket #12345")
  .withPlainText("Something went wrong inside the MyApp!")
  .buildEmail();

Mailer mailer = MailerBuilder
  .withSMTPServer("smtp.host.com", 587, "user@host.com", "password")
  .withTransportStrategy(TransportStrategy.SMTP_TLS)
  .withProperty("mail.smtp.sendpartial", true)
  .buildMailer();

mailer.sendMail(email);

很直接的东西,对吧?除了我对一件简单的事情感到困惑:我在这里使用哪个 SMTP 服务器?我会使用我的 GoDaddy 帐户提供给我的 Microsoft Exchange 服务器,还是会选择其他东西?

4

1 回答 1

1

这在一定程度上取决于您想要做什么。

如果您只想尝试一次发送邮件,请连接到接受邮件的邮件服务器 support@myapp.example.com。听起来这是 Microsoft 拥有的 office365 服务器,它接受 myapp.example.com 的邮件。该域应该有公共 DNS 记录。我没有使用过 Simple Java Mail 库,但根据您的伪代码,我认为它会为您进行 DNS 查找。

有时会发生应用程序在尝试发送电子邮件时遇到错误的情况。例如,有人可能会在 smtp 对话过程中重新启动您的应用服务器,或者重新启动您的路由器,或者其他什么。使用诸如 Exchange 之类的邮件传输代理 (MTA) 来帮助使此过程更加健壮是很常见的。如果 MTA 在第一次交付尝试时失败,它将在某个可配置的时间段内重试交付。在您的情况下,您可以将电子邮件发送到您的 Exchange 服务器,它会将电子邮件路由到 myapp.example.com。

(在这种情况下,Exchange 有点充当邮件提交代理 (MSA),但这有点吹毛求疵。)

希望这可以帮助。

于 2019-11-21T18:21:54.747 回答