Spring JavaMailSender:收件人设置为“默认”

时间:2016-05-17 13:55:04

标签: java spring email javamail

这是我的第一个问题,所以我想保持简单。 我在Spring Framework 4.1.8.RELEASE中遇到了JavaMailSender的问题。对于特定的SMTP,它似乎不会向邮件添加收件人。我想提一下,我们在其他项目中使用相同的解决方案,它始终有效。从现在开始,收件人没有问题。

以下是我们如何设置收件人(setupRecipients方法)的代码示例:

UNION ALL

以下是我们如何发送电子邮件的示例(mailSender的类型为JavaMailSender):

String emailTo = entity.getEmailTo();
Preconditions.checkNotNull( !Strings.isNullOrEmpty( emailTo ) );
emailTo = emailTo.replace( ",", " " );
emailTo = emailTo.replace( ";", " " );
InternetAddress[] emails = InternetAddress.parse( emailTo );

for ( InternetAddress address : emails )
    address.validate();

for ( InternetAddress address : emails )
    messageHelper.setTo( address.getAddress() );

if ( !Strings.isNullOrEmpty( bcc ) )
    messageHelper.addBcc( bcc );

当我尝试使用该特殊SMTP发送电子邮件时,我收到此回复:

    MimeMessage message = this.mailSender.createMimeMessage();

    try {
        MimeMessageHelper e = new MimeMessageHelper(message, true, "utf-8");
        e.setFrom(this.from);
        message.setSubject(this.createSubject(entity));
        this.setupRecipients(entity, e);
        this.setupBody(entity, e);
        this.setupAttachments(entity, e);
        this.setupInlines(entity, e);
        this.mailSender.send(message);
    } catch (IOException | MessagingException var4) {
        Throwables.propagate(var4);
    }

以下是我们尝试的列表:

  1. 首先,我们咨询了SMTP提供商;然而,他们的回答是收件人被设置为“默认”而没有别的。我们还要求日志,但从那以后他们没有提供它们(它不是我们的SMTP,但它们甚至没有提供给所有者)。
  2. 其次,当我尝试使用Spring配置JavaMail并使用我的开发机器本地发送电子邮件而不是我们的应用程序通常运行的服务器时,它按预期工作。此外,SMTP在配置为ex时发送电子邮件没有问题。雷鸟。
  3. 当我们在服务器上使用SMTP切换SMTP时,它可以正常工作。
  4. 结论是问题必须是服务器配置,服务器和SMTP或SMTP之间。但是我不知道究竟会导致什么。

1 个答案:

答案 0 :(得分:0)

发现电子邮件后,我发现导致问题的原因。但是,我不知道为什么会这样。

无法发送消息并获取" 默认"我们向 MessageHelper 添加BCC或CC地址时收件人。我尝试了不同的方法 addBcc,setBcc,addCc,setCc ,但所有这些都产生相同的结果。这很奇怪,我无法真正找到解释。

更新:

我们找到了一个真正的罪魁祸首。 bcc中使用的地址值默认,当然没有记录和验证(这样的错误)。然而最令人感兴趣的是,由于注释 @Autowired ,即使设置为其他正确的地址,bcc也会获得值默认值。有趣的是,即使我们没有声明可以连接的任何值,Spring也没有抛出异常。