当服务器基于云时,要将 Java 邮件发送到哪个 SMTP 服务器?
Which SMTP sever to send Java Mail to when the server is cloud-based?
Java 8 在这里,尽管我想这确实更像是一个通用的 Exchange/SMTP 问题。
我从 GoDaddy 购买了域名和 Office 365 支持,因此,通过它们获得了多个电子邮件地址。假设其中之一是 support@myapp.example.com
.
我正在编写一个 Java 8 应用程序,它允许用户向此支持地址发送电子邮件(通过该应用程序)。我可能会使用优秀的 Simple Java Mail 库,它包装了 Java 邮件 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 服务器,还是会选择其他服务器?
这在一定程度上取决于您想做什么。
如果您只想尝试发送一次邮件,请连接到接受邮件的邮件服务器以获得支持@myapp.example.com。听起来这是 Microsoft 拥有的 office365 服务器,它接受 myapp.example.com 的邮件。该域应该有 public DNS 记录。我没有使用 Simple Java Mail 库,但从你的伪代码来看,我假设它会为你进行 DNS 查找。
应用程序在尝试发送电子邮件时有时会遇到错误。例如,有人可能会在 smtp 对话中间重启您的应用服务器,或重启您的路由器,或其他。使用诸如 Exchange 之类的邮件传输代理 (MTA) 来帮助使此过程更加稳健是很常见的。如果 MTA 在第一次投递尝试时失败,它将在某个可配置的时间段内重试投递。在您的情况下,您可以将电子邮件发送到您的 Exchange 服务器,它会将电子邮件路由到 myapp.example.com。
(在这种情况下,Exchange 有点像邮件提交代理 (MSA),但这有点吹毛求疵。)
希望这对您有所帮助。
Java 8 在这里,尽管我想这确实更像是一个通用的 Exchange/SMTP 问题。
我从 GoDaddy 购买了域名和 Office 365 支持,因此,通过它们获得了多个电子邮件地址。假设其中之一是 support@myapp.example.com
.
我正在编写一个 Java 8 应用程序,它允许用户向此支持地址发送电子邮件(通过该应用程序)。我可能会使用优秀的 Simple Java Mail 库,它包装了 Java 邮件 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 服务器,还是会选择其他服务器?
这在一定程度上取决于您想做什么。
如果您只想尝试发送一次邮件,请连接到接受邮件的邮件服务器以获得支持@myapp.example.com。听起来这是 Microsoft 拥有的 office365 服务器,它接受 myapp.example.com 的邮件。该域应该有 public DNS 记录。我没有使用 Simple Java Mail 库,但从你的伪代码来看,我假设它会为你进行 DNS 查找。
应用程序在尝试发送电子邮件时有时会遇到错误。例如,有人可能会在 smtp 对话中间重启您的应用服务器,或重启您的路由器,或其他。使用诸如 Exchange 之类的邮件传输代理 (MTA) 来帮助使此过程更加稳健是很常见的。如果 MTA 在第一次投递尝试时失败,它将在某个可配置的时间段内重试投递。在您的情况下,您可以将电子邮件发送到您的 Exchange 服务器,它会将电子邮件路由到 myapp.example.com。
(在这种情况下,Exchange 有点像邮件提交代理 (MSA),但这有点吹毛求疵。)
希望这对您有所帮助。