【问题标题】:Send Email from one address server to another server using Java Mail API使用 Java Mail API 从一个地址服务器向另一台服务器发送电子邮件
【发布时间】:2012-12-20 05:00:16
【问题描述】:

我有一个在线表格,允许用户通过电子邮件向公司投诉。为了测试它,我使用了 gmail smtp 作为我的主机。当发件人也是 gmail 时,我可以将邮件接收到指定的电子邮件帐户,但我希望“发件人”不仅限于 gmail 帐户。似乎 smtp 仅适用于从同一服务器发送电子邮件?

示例:如果发件人是 abc@gmail.com 并且公司电子邮件是 company@gmail.com,我的表单效果很好。

但是,如果为发件人输入 xyz@yahoo.com,则收件人 company@gmail.com 永远不会得到它。

任何帮助将不胜感激。如果需要,我也可以提供我的代码。

【问题讨论】:

  • 它可能会作为垃圾邮件到达,可能是因为被怀疑是网络钓鱼。
  • 您总是可以使用不同的继电器。 Google 在防止通过其服务器发送垃圾邮件方面非常严格。
  • 感谢大家的回复。我只是使用 gmail 来测试,但真正的形式将使用 Microsoft Outlook。您是否知道 Outlook 是否允许您从 hotmail、yahoo、gmail 等其他服务器向公司的 Outlook 地址发送电子邮件?
  • 也许我做错了。 SMTP甚至是正确的方法吗?表格中填写了用户的电子邮件地址和消息,然后通过电子邮件发送给公司。我可能错误地认为 SMTP 可以用来接收电子邮件。

标签: java jakarta-mail


【解决方案1】:

您的问题是使用 SMTP 时的常见安全限制。传出的 SMTP 电子邮件只能包含属于发件人的“发件人”地址。如果您违反此规则,您的电子邮件可能会被视为垃圾邮件。

以下内容将允许您的收件人回复备用地址。

Properties properties = new Properties();
props.put("mail.smtp.from", "abc@gmail.com");
Session session = Session.getDefaultInstance(props, null);
MimeMessage m = new MimeMessage(session);
m.addFrom(InternetAddress.parse("xyz@yahoo.com"));
m.setReplyTo(InternetAddress.parse("xyz@yahoo.com")); 

另见

【讨论】:

  • 抱歉,我做了很多修改。我很难记住如何正确执行此操作。
  • 感谢迈克的回复。所以这会使“发件人”等于发件人的电子邮件?我正在寻找的是将他们在我的表单中输入的发件人的电子邮件设置在 Microsoft Outlook 电子邮件帐户的“发件人”字段中。
  • 针对您的评论,我更新了我的答案。这会将reply-to 和from 标头设置为yahoo.com 地址,但SMTP“邮件发件人”字段将使用gmail.com 地址。再说一次,我已经很久没有这样做了,但我过去必须解决你的确切问题。
【解决方案2】:

您必须拥有另一封电子邮件,并将其设置为与 gmail 一起使用, 详情请查看here

【讨论】:

    【解决方案3】:

    最好使用服务器上拥有该应用程序的用户的身份将消息发送到您公司的邮件服务器,并将客户在在线表单中提供的信息作为数据包含在您发送的消息中。该消息看起来不像来自客户,但实际上它不是来自客户,因为它不是使用客户的邮件服务器发送的。

    【讨论】:

    • 比尔这是一个很好的观点,也是我决定采取的路线。我正在对他们的系统进行升级,而他们则以另一种方式进行。我很好奇这是如何完成的,但为了不破解代码,我会按照你建议的方式进行。
    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多