使用JavaMail api发送的电子邮件中未设置发件人

时间:2014-04-19 04:50:58

标签: java email javamail html-email

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

enter image description here

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也是模拟域名。在实际应用程序中,我使用真实域,但结果是相同的。

enter image description here

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

1 个答案:

答案 0 :(得分:6)

尝试使用setFrom代替setSender,即:

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