这是我的第一个问题,所以我想保持简单。 我在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);
}
以下是我们尝试的列表:
结论是问题必须是服务器配置,服务器和SMTP或SMTP之间。但是我不知道究竟会导致什么。
答案 0 :(得分:0)
发现电子邮件后,我发现导致问题的原因。但是,我不知道为什么会这样。
无法发送消息并获取" 默认"我们向 MessageHelper 添加BCC或CC地址时收件人。我尝试了不同的方法 addBcc,setBcc,addCc,setCc ,但所有这些都产生相同的结果。这很奇怪,我无法真正找到解释。
我们找到了一个真正的罪魁祸首。 bcc中使用的地址值默认,当然没有记录和验证(这样的错误)。然而最令人感兴趣的是,由于注释 @Autowired ,即使设置为其他正确的地址,bcc也会获得值默认值。有趣的是,即使我们没有声明可以连接的任何值,Spring也没有抛出异常。