【问题标题】:Sender is not set in Email sent using JavaMail api发件人未在使用 JavaMail api 发送的电子邮件中设置
【发布时间】:2014-06-03 15:55:57
【问题描述】:

我有以下代码。但在电子邮件中,我将发件人设为“未知发件人”。当收件人是gmail和yahoo时,根本收不到邮件。我设法从自己的域邮箱(在 Outlook 中设置)以及另一个公司的电子邮件地址(不同的域)接收电子邮件。在这两个中,显示了发件人电子邮件,但在收到电子邮件时仍在 Outlook 中,它显示为“未知发件人”,并且未显示名称。

Properties props = new Properties();
        props.put("mail.smtp.host", "mail.domain.com"));

    props.put("mail.smtp.auth","false"));
    props.put("mail.smtp.starttls.enable","false"));
    props.put("mail.smtp.port","25"));

    Session session = Session.getDefaultInstance(props);


    try {
        String subject = "Email Subject";
        MimeMessage message = new MimeMessage(session);
        message.setSender(new InternetAddress("no-reply@domain.com", "Sender Name"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(emailTo));
        message.setSubject(subject);
        String content = writer.toString();
        message.setContent(content, "text/html; charset=UTF-8");

        Transport.send(message);
        logger.debug ("Email sent");
        return true;
    }

没有例外,我收到“已发送电子邮件”的日志

我没有邮箱。我想发送没有发件人的电子邮件,仍然在电子邮件中应显示发件人姓名,以及发件人电子邮件地址为“no-reply@domain.com”

以下是它的显示方式。我有白色标记的公司敏感数据。 domain.com 也是模拟域。在实际应用程序中,我使用真实域,但结果是相同的。

为什么 gmail 和 yahoo 阻止我的邮件?

【问题讨论】:

  • 我猜它被过滤为垃圾邮件了?检查您在 gmail 和 yahoo 中的垃圾邮件文件夹。
  • 不是。在外观发件人电子邮件和名称显示。它仍然被识别为“未知发件人”。

标签: java email jakarta-mail html-email


【解决方案1】:

尝试使用setFrom 而不是setSender,即:

message.setFrom(new InternetAddress("Sender Name" + "<" + "no-reply@domain.com" + ">"));

【讨论】:

  • setFrom方法是设置发件人邮箱,必须使用。 setSender 方法仅在您想要“代表发送”功能时使用 - 它设置代表作者行事的实际发件人的地址,列在 From: 字段(秘书、列表管理员等)@ 987654321@
猜你喜欢
  • 2012-03-16
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2012-01-28
  • 2013-06-13
  • 1970-01-01
相关资源
最近更新 更多