我有想要添加电子邮件功能的 java web 应用程序,但是,我不确定完成此操作需要什么。具体来说,我希望我的应用能够:
- 发送确认注册的电子邮件
- 允许用户使用我的应用程序的域(即 dan@my-app.com)相互发送电子邮件
根据我的研究,我似乎需要像 Postfix 这样的邮件传输代理 (MTA),可能还需要像 Courier 这样的 IMAP 服务器;但我不明白对 IMAP 服务器的需求。
谢谢。
我有想要添加电子邮件功能的 java web 应用程序,但是,我不确定完成此操作需要什么。具体来说,我希望我的应用能够:
根据我的研究,我似乎需要像 Postfix 这样的邮件传输代理 (MTA),可能还需要像 Courier 这样的 IMAP 服务器;但我不明白对 IMAP 服务器的需求。
谢谢。
您需要在 Web 应用程序中编写代码来创建电子邮件并将其发送到 SMTP 世界。通常使用 JavaMail,您可以将它包含在您的 Web 应用程序中,或者(首选)让 Web 容器通过 JNDI 提供正确配置的实例。这是特定于供应商的。
如果您没有用于 JavaMail 连接的 SMTP 服务器(通常是 Exchange for Windows 商店),您可以运行一个(询问您的 IT 管理员)或使用 Google Mail 或 Hotmail 或其他如果它适合您的Web 应用程序通过它们发送邮件。将 GMail 用作 SMTP 服务器有点棘手,但如果设置正确,效果会非常好。
您将需要 SMTP 服务器,因为它处理有关 MX 记录的所有无聊细节,如果 SMTP 服务器进行灰名单等,则重新发送等等。
哦,IMAP 是用于接收递送的邮件,而不是发送邮件。你不需要它。
如果它是一个 Java Web 应用程序,那么服务器部分就是一个 servlet。给定从客户端表单发送的电子邮件消息,您的服务器需要将该文本作为电子邮件发送。
Java EE 堆栈中有执行此操作的代码,或者您可以专门下载JavaMail。这将允许您的程序充当邮件客户端。
您的 MTA 从您的 servlet 接收消息并将它们发送给用户。到目前为止,一切都很好。
但是您还需要一个邮箱,即相当于您的用户的邮件收件箱。Postfix、QMail 和其他人提供了一个基本的“平面”邮箱模型,邮件被简单地存储,直到客户端拿起它,然后(通常)被删除。通过 POP3 访问。IMAP 提供了更多的组织能力,即能够指定嵌套邮箱的层次结构、在它们之间传输邮件等等。您可能不想为所有这些复杂性创建一个 GUI 前端,所以我猜您并不真的需要 IMAP 服务器。但是,您确实需要一个相对简单的 POP3 服务器来允许您的 servlet 通过 TCP/IP 访问邮箱。这通常是“标准”电子邮件服务器包的一部分。
要让世界知道您自己的域,您需要访问您的 DNS 服务的 MX 记录,即您必须在面向 Internet 的地址上设置一两个主机作为您的邮局。
最后,如果您想省去很多麻烦,请在配置 MTA(SMTP 服务器)时非常小心,以免它被用作开放中继。也就是说,您的用户一般不可能向外界发送邮件(否则黑客会找到一种方法来滥用您的 Web 界面来执行此操作),并且来自 Internet 的邮件不应到达您的用户。最重要的是,来自 Internet 的邮件不应该被转发到 Internet 上的其他地方。在网上找到一个开放的中继测试服务(它们是免费的),一旦你认为你已经完成了,就让一个对你的配置进行测试。
编辑:
看着 Thorbjorn 的回答,我意识到您可能不希望您的用户通过您的应用程序接收他们的邮件;他们可能已经拥有自己的电子邮件提供商和帐户。在这种情况下,您无需担心收件箱功能或 POP3 服务器。您可以考虑在您的域中提供完整的电子邮件服务,但这是一项非常吃力不讨好的工作,如果您有任何选择,请将这项肮脏的工作留给 GMail、Yahoo、Hotmail 等。无论您提供什么服务,都无法让您的客户满意,而且您每天都在与垃圾邮件和其他犯罪活动作斗争。
首先,您的服务器必须具有邮寄能力。在 linux 土地上 sendmail 通常是这样的。
此外,请查看 javaMail。
http://www.oracle.com/technetwork/java/index-jsp-139225.html