Spring邮件支持 - 没有主题

时间:2010-02-22 12:13:18

标签: java spring email

我已经更新了我的库,现在发送的电子邮件没有主题。我不知道这发生在哪里......

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;
}

之前一切正常,我想知道新图书馆是否存在任何冲突。

2 个答案:

答案 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);
    }
}