spring - 电子邮件已发送但超时
问题描述
我使用spring boot 2。我尝试发送邮件。服务器是outlook 在我的build.gradle
编译('org.springframework.boot:spring-boot-starter-mail')
在我的门面课上
for (FactoryEmailNC factoryEmail : factoryEmails) {
String message = mailContentBuilder.build(factoryEmail);
if (factoryEmail.getEmails() != null && !factoryEmail.getEmails().isEmpty()) {
mailService.sendHtmlMail(factoryEmail.getEmails(), "Not compliant", message);
//query to specify email has been sent.
setSampleEmailSent(factoryEmail);
}
}
private void setSampleEmailSent(FactoryEmailNC factoryEmail) {
....
samplesServices.setEmailsSent(testSampleIdEmailSent);
}
在我的 SamplesServices 课程中
@Transactional
public void setEmailsSent(Map<String, List<SampleId>> testSampleIdEmailSent){
//call to repository, set flag email sent to true
...
}
public class MailServiceImpl(){
@Autowired
private JavaMailSender javaMailSender;
@Async
public void sendHtmlMail(List<String> to, String subject, String body) throws MessagingException {
MimeMessage mail = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mail, true);
...
helper.setTo(to.stream().toArray(String[]::new)); //line 64
javaMailSender.send(mail);
}
}
实际上已发送电子邮件,但似乎没有调用 setSampleEmailSent,因为电子邮件标志仍为 false
org.springframework.mail.MailSendException:消息失败:javax.mail.MessagingException:异常读取响应;嵌套异常是:java.net.SocketTimeoutException:在 org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:490) 处读取超时~[spring-context-support-5.1.5.RELEASE.jar!/: 5.1.5.RELEASE] 在 org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:360) ~[spring-context-support-5.1.5.RELEASE.jar!/:5.1.5.RELEASE] 在org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355) ~[spring-context-support-5.1.5.RELEASE.jar!/:5.1.5.RELEASE] at com.mermacon.service.MailServiceImpl .sendHtmlMail(MailServiceImpl.java:64) ~[classes!/:na]
在我的应用程序属性中
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
spring.mail.properties.from=info@meracon.com
spring.mail.host=mail.oldubi.com
spring.mail.port=25
知道为什么发送电子邮件但仍然超时?
编辑 1
仅当我发送多于一封电子邮件时才会超时 发送 1 封电子邮件的日志文件 https://pastebin.com/6y6n8MV5
发送 1 封电子邮件后的日志文件 https://pastebin.com/j2sT7qHu
编辑 2
我在发送的每封电子邮件之间放置了一个线程睡眠,超时消失
解决方案
推荐阅读
- arrays - 某些 Obj-C 函数中的错误访问
- html - 在 UI 中显示时如何识别原始 json?
- php - 正则表达式匹配嵌套括号内的分号
- jqgrid - 有时 jqgrid getChangedCell 不返回复选框已更改
- swift - Swift 5 中 getInputStream() 的相关代码是什么?
- linux - Bash 中的单词表生成器
- python - Ruby Integer#chr vs Python chr() 不同的结果
- consul - Consul HTTP 请求获取所有 kv 值
- android - 从 ByteArray 的字符串转换为字符串
- sql - 如何将列转置为行并复制原始列标题?