2010-07-29 28 views
2

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

  1. 发送电子邮件确认的注册
  2. 允许用户发送电子邮件彼此,用我的应用程序的域即[email protected]

从我的研究看来我需要像Postfix的邮件传输代理(MTA)和可能的IMAP服务器像快递;但我不明白IMAP服务器的需要。

谢谢。

+1

如果您希望广大公众使用您的服务,而不仅仅是一些公司内部网用户,他们会从路由器后面发送任何内容,您可能需要阅读以下内容:http://www.codinghorror.com/blog /2010/04/so-youd-like-to-send-some-email-through-code.html如果你真的希望人们收集这些电子邮件。 – 2010-07-29 15:24:17

+1

@Marc,因此如果可能的话使用现有的,可用的SMTP服务器是一个好主意。 – 2010-07-29 15:29:36

+0

你绝对需要至少一台SMTP服务器。另见[这个答案](http://stackoverflow.com/questions/3270995/is-smtp-server-required-to-send-mail-through-web-server-by-using-javamail-api/3271584#3271584 )。 – BalusC 2010-07-29 15:30:15

回答

2

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

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

您需要的SMTP服务器,因为它处理所有关于MX记录并重新发送,如果SMTP服务器不列入灰名单,等等,等等

哦无聊的细节,和IMAP是越来越交付邮件,而不是发送邮件。你不需要它。

+0

Postfix是安装/使用的最简单的开源SMTP服务器吗?此外,感谢您澄清IMAP服务器的角色;我在网上查看的一些示例使得IMAP看起来像是发送电子邮件的组件,由于IMAP代表Internet邮件ACCESS协议,所以这是令人困惑的。 – Dan 2010-07-29 16:34:28

+0

Postfix是Ubuntu“喜欢”的MTA,因此所有的文档都提到了这一点。 “简单”取决于你的技能:)你的Web容器运行在什么平台上,如果它是Linux的某种风格,启动和运行起来可能非常简单 – 2010-07-29 16:40:17

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的邮件不应该传达给您的用户。最重要的是,互联网上的邮件不应该被转发到互联网上的其他地方。在网络上找到一个open relay testing service(他们是免费的),一旦你认为你完成了就可以对你的配置进行测试。

编辑:

看着托尔比约恩的回答,我意识到你可能不希望用户通过您的应用程序收到他们的邮件;他们可能已经拥有自己的电子邮件提供商和账户。在这种情况下,您无需担心收件箱功能或POP3服务器。您可以考虑在您的域名中提供完整的电子邮件服务,但这是一项非常不讨好的工作,如果您有任何选择,请将这些肮脏的工作留给Gmail,Yahoo,Hotmail等。无论您提供什么服务都不会让您的客户满意,并且您每天都会与垃圾邮件和其他犯罪作斗争。

+0

对于安全问题来说,这是一个很大的优势。在做这件事之前,三思而后行。 – BalusC 2010-07-29 15:42:09

+0

自己的SMTP服务器的一个简单的解决方案是安装和配置postfix的虚拟Ubuntu 10.04服务器实例(在vmware,virtualbox,parallels,虚拟pc中运行)。 – 2010-07-29 16:21:14

+0

在这一点上,我只想提供我的应用程序用户发送电子邮件的能力。我同意提供完整的电子邮件服务可能是一个不尽人意的工作,只需最少的额外(如果有)好处。 感谢您对开放式继电器测试服务的详细说明和单挑;这非常有帮助。我一定会进一步研究继电器测试。 – Dan 2010-07-29 16:41:47

相关问题