为Web应用程序添加电子邮件功能需要什么?

时间:2010-07-29 15:19:53

标签: java email web-applications imap postfix-mta

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

  1. 发送确认注册的电子邮件
  2. 允许用户使用我应用的域名发送电子邮件,即dan@my-app.com
  3. 根据我的研究,似乎我需要一个像Postfix这样的邮件传输代理(MTA),可能还需要一个像Courier这样的IMAP服务器;但我不明白是否需要IMAP服务器。

    感谢。

3 个答案:

答案 0 :(得分:2)

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

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

您将需要SMTP服务器,因为它处理有关MX记录的所有无聊详细信息,并在SMTP服务器进行灰名单等时重新发送等。

哦,IMAP是获取传递的邮件,而不是发送邮件。你不需要它。

答案 1 :(得分: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上的其他位置。在'net上找到open relay testing service(他们是免费的),并在您认为完成后,让他们对您的配置进行测试。

修改

看看Thorbjorn的回答,我意识到您可能不希望您的用户通过您的应用收到他们的邮件;他们可能已经拥有自己的电子邮件提供商和帐户。在这种情况下,您无需担心收件箱功能或POP3服务器。您可以考虑在您的域中提供完整的电子邮件服务,但这是一个非常吃力不讨好的工作,如果您有任何选择,请将这些肮脏的工作留给GMail,Yahoo,Hotmail等。无论您提供什么服务,都不会让您的客户满意,而且您每天都会打击垃圾邮件和其他犯罪行为。

答案 2 :(得分:0)

对于初学者,您的服务器必须具有邮件功能。在linux中,sendmail通常是这样的。

另外,请查看javaMail。

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