【问题标题】:What is needed to add emailing capabilities to web application?向 Web 应用程序添加电子邮件功能需要什么?
【发布时间】:2011-03-22 19:17:25
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 如果您希望广大公众使用您的服务,而不仅仅是一些会从路由器后面接收任何信息的公司内部网人员,您可能需要阅读以下内容:codinghorror.com/blog/2010/04/… 如果您真的希望人们得到这些电子邮件。
  • @Marc,因此如果可能的话,最好使用现有的、正常工作的 SMTP 服务器。
  • 你肯定至少需要一个 SMTP 服务器。另请参阅this answer
  • @Thorbjørn 哦,当然。我发表评论是因为我没有时间充实完整的答案,但想补充一点,仅拥有 SMTP 服务器是不够的。

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


【解决方案1】:

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

另外,请查看 javaMail。

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • Postfix 是最容易设置/使用的开源 SMTP 服务器吗?另外,感谢您对 IMAP 服务器角色的说明;我在网上查看的一些示例使 IMAP 看起来像是发送电子邮件的一个组件,这令人困惑,因为 IMAP 代表互联网邮件访问协议。
    • Postfix 是 Ubuntu “偏爱”的 MTA,因此所有文档都提到了这一点。 “简单”取决于您的技能:) 您的 Web 容器在什么平台上运行,如果它是某种 Linux 风格,启动和运行可能非常简单
    【解决方案3】:

    如果它是一个 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 上的其他地方。在网上找到一个open relay testing service(它们是免费的),一旦你认为你已经完成了,就找一个对你的配置进行测试。

    编辑:

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

    【讨论】:

    • 安全问题的加分项。在做这件事之前要三思而后行。
    • 您自己的 SMTP 服务器的简单解决方案是安装和配置后缀的虚拟 Ubuntu 10.04 服务器实例(在 vmware、virtualbox、parallels、virtual pc 中运行)。
    • 此时,我只想为我的应用用户提供发送电子邮件的能力。我同意提供完整的电子邮件服务可能是一项吃力不讨好的工作,而额外的(如果有的话)好处很少。感谢您对开放中继测试服务的详细解释和提醒;这很有帮助。我一定会进一步研究中继测试。
    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2013-09-21
    相关资源
    最近更新 更多