2

我有想要添加电子邮件功能的 java web 应用程序,但是,我不确定完成此操作需要什么。具体来说,我希望我的应用能够:

  1. 发送确认注册的电子邮件
  2. 允许用户使用我的应用程序的域(即 dan@my-app.com)相互发送电子邮件

根据我的研究,我似乎需要像 Postfix 这样的邮件传输代理 (MTA),可能还需要像 Courier 这样的 IMAP 服务器;但我不明白对 IMAP 服务器的需求。

谢谢。

4

3 回答 3

2

您需要在 Web 应用程序中编写代码来创建电子邮件并将其发送到 SMTP 世界。通常使用 JavaMail,您可以将它包含在您的 Web 应用程序中,或者(首选)让 Web 容器通过 JNDI 提供正确配置的实例。这是特定于供应商的。

如果您没有用于 JavaMail 连接的 SMTP 服务器(通常是 Exchange for Windows 商店),您可以运行一个(询问您的 IT 管理员)或使用 Google Mail 或 Hotmail 或其他如果它适合您的Web 应用程序通过它们发送邮件。将 GMail 用作 SMTP 服务器有点棘手,但如果设置正确,效果会非常好。

您将需要 SMTP 服务器,因为它处理有关 MX 记录的所有无聊细节,如果 SMTP 服务器进行灰名单等,则重新发送等等。

哦,IMAP 是用于接收递送的邮件,而不是发送邮件。你不需要它。

于 2010-07-29T15:27:15.483 回答
1

如果它是一个 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 等。无论您提供什么服务,都无法让您的客户满意,而且您每天都在与垃圾邮件和其他犯罪活动作斗争。

于 2010-07-29T15:33:39.170 回答
0

首先,您的服务器必须具有邮寄能力。在 linux 土地上 sendmail 通常是这样的。

此外,请查看 javaMail。

http://www.oracle.com/technetwork/java/index-jsp-139225.html

于 2010-07-29T15:22:17.770 回答