我已经更新了我的库,现在发送的电子邮件没有主题。我不知道这发生在哪里......
Mail API是1.4.3。,Spring 2.5.6。和Spring Integration Mail 1.0.3.RELEASE。
<!-- Definitions for SMTP server -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
</bean>
<bean id="adminMailTemplate" class="org.springframework.mail.SimpleMailMessage" >
<property name="from" value="${mail.admin.from}" />
<property name="to" value="${mail.admin.to}" />
<property name="cc">
<list>
<value>${mail.admin.cc1}</value>
</list>
</property>
</bean>
<!-- Mail service definition -->
<bean id="mailService" class="net.bbb.core.service.impl.MailServiceImpl">
<property name="sender" ref="mailSender"/>
<property name="mail" ref="adminMailTemplate"/>
</bean>
属性mail.host,mail.username,mail.password,mail.admin.from,mail.admin.to, mail.admin.cc1。
Java类:
/** The sender. */
private MailSender sender;
/** The mail. */
private SimpleMailMessage mail;
public void sendMail() {
this.mail.setSubject("Subject");
this.mail.setText("msg body");
try {
getSender().send(this.mail);
} catch (MailException e) {
log.error("Error sending mail!",e);
}
}
public SimpleMailMessage getMail() {
return this.mail;
}
public void setMail(SimpleMailMessage mail) {
this.mail = mail;
}
public MailSender getSender() {
return this.sender;
}
public void setSender(MailSender mailSender1) {
this.sender = mailSender1;
}
之前一切正常,我想知道新图书馆是否存在任何冲突。
答案 0 :(得分:5)
最后 - 我有时间解决这个问题。
在pom.xml中,我添加了java邮件依赖项,并在apache axis transport http dependency中删除了geronimo javamail的排除。
答案 1 :(得分:1)
我希望这与您向bean中注入单个SimpleMailMessage
的方式有关。这不是线程安全的,因为对sendMail
方法的每次调用都将使用相同的底层SimpleMailmessage
对象。现在,新库中的某些实现更改很可能意味着这已经被破坏了。
SimpleMailMessage
有一个复制构造函数,所以你应该这样做:
<bean id="mailService" class="net.bbb.core.service.impl.MailServiceImpl">
<property name="sender" ref="mailSender"/>
<property name="template" ref="adminMailTemplate"/>
</bean>
和
private SimpleMailMessage template;
public void setTemplate(SimpleMailMessage template) {
this.template = template;
}
public void sendMail() {
SimpleMailMessage message = new SimpleMailMessage(template);
message.setSubject("Subject");
message.setText("msg body");
try {
getSender().send(message);
} catch (MailException e) {
log.error("Error sending mail!",e);
}
}