2010-02-22 3 views
3

Я обновил свои библиотеки, и теперь электронные письма отправляются без темы. Я не знаю, где это произошло ...Поддержка Spring mail - нет темы

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

У вас возникли проблемы? Я тоже сталкиваюсь с этим, поэтому мне бы это понравилось, если бы вы смогли ответить на этот вопрос :). – Confusion

+0

В настоящий момент это не так необходимо, но я попытаюсь найти его до конца недели. – Trick

+2

Я нашел решение здесь: http://stackoverflow.com/questions/1010296/javamail-not-sending-subject-or-from-under-jettyrun-war (исключая определенные банки, втянутые как зависимости) – Confusion

ответ

5

Наконец - у меня было время, чтобы решить эту проблему.

В pom.xml, я добавил зависимость java-почты и исключил исключение для geronimo javamail в зависимости от HTTP-зависимой оси apache.

+0

Спасибо, это действительно исправило проблему для меня тоже! – OldTroll

+0

org.apache.axis2 ось2-XMLBeans 1.4.1 org.apache.geronimo.specs Джеронимо-javamail_1.4_spec mirzaei

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); 
    } 
} 
+0

+1 Спасибо за это. Но это не устранило проблему ... – Trick

+0

@Trick: В информации, которую вы нам дали, больше ничего нет, что могло бы вызвать вашу проблему. – skaffman

+0

Это должно быть что-то с библиотеками. Я верну все. – Trick

Смежные вопросы