【发布时间】:2017-09-27 04:42:14
【问题描述】:
我试图在我的 spring 应用程序中设置一个邮件发件人:
@Configuration
public class MailConfig {
private static final String HOSTNAME = "mail.********.com";
private static final int SMTP_PORT = 25;
private static final String USERNAME = "*********";
private static final String PASSWORD = "*********";
private static final String FROM_ADDRESS = "***********";
@Bean
public HtmlEmail mailSender() {
HtmlEmail email = new HtmlEmail();
email.setHostName(HOSTNAME);
email.setSmtpPort(SMTP_PORT);
email.setAuthenticator(new DefaultAuthenticator(USERNAME, PASSWORD));
email.setSSLOnConnect(true);
try {
email.setFrom(FROM_ADDRESS, "Support");
} catch (EmailException e) {
throw new BeanCreationException("mailSender", "Failed to create a mailSender", e);
}
return email;
}
}
这是我用来发送邮件的服务:
@Service
public class MailService {
public static Logger log = Logger.getLogger(Logger.class.getName());
private final HtmlEmail mailSender;
@Autowired
public MailService(HtmlEmail mailSender) {
this.mailSender = mailSender;
this.notificationService = notificationService;
this.commonDAO = commonDAO;
}
@Async
public void sendMail(int accountId, String subject, String message) {
log.debug("entered MailService.sendMail");
String emailId = commonDAO.getEmailId(accountId);
try {
mailSender.setSubject(subject);
mailSender.setHtmlMsg(getMailContent(message, accountId));
mailSender.addTo(emailId);
mailSender.addBcc("************");
mailSender.send();
sleep(1000L);
} catch (Exception e) {
log.error("Error:", e);
}
}
}
第一次启动tomcat后,当我调用mailService.sendMail()时,邮件发送正确。第二次以后,我收到错误
java.lang.IllegalStateException: The MimeMessage is already built.
at org.apache.commons.mail.Email.buildMimeMessage(Email.java:1261)
at org.apache.commons.mail.MultiPartEmail.buildMimeMessage(MultiPartEmail.java:258)
at org.apache.commons.mail.HtmlEmail.buildMimeMessage(HtmlEmail.java:528)
at org.apache.commons.mail.Email.send(Email.java:1427)
at com.cinch.v2.service.MailService.sendMail(MailService.java:41)
at com.cinch.v2.service.MailService$$FastClassBySpringCGLIB$$d7350403.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:115)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.lang.Thread.run(Thread.java:745)
我在这里做错了什么?如何正确设置?
【问题讨论】:
-
我已经看到那个帖子了,但是我不知道在哪里调用这些方法
标签: java email illegalstateexception