2012-09-03 73 views
0

IM,每當我嘗試發送郵件的功能我得到這個異常:SimpleMailMessage使用彈簧SimpleMailMessage不工作

java.lang.IllegalArgumentException: The 'original' message argument cannot be null 

我spring.xml

<bean id="MailSender" class="com.util.MailSender"> 

    <property name="mailSender" ref="mailSender"/> 
    <property name="templateMessage" ref="templateMessage"/> 

</bean> 

MailSenderClass:

private MailSender mailSender; 
    private SimpleMailMessage templateMessage; 

    //getter and setter 
    public void sendMail(String content, List<String> listEmail){ 
     SimpleMailMessage[] mailMessageArray = new SimpleMailMessage[listEmail.size()]; 
     Iterator<String> iterator = listEmail.iterator(); 

     for (int index = 0; iterator.hasNext(); index ++){ 

    SimpleMailMessage message = new SimpleMailMessage(this.templateMessage); 
    String toAddress = iterator.next(); 
     message.setTo(toAddress); 
    message.setText(content); 
     mailMessageArray[index] = message; 

    } 
     this.mailSender.send(mailMessageArray); 
    } 

動作豆類:

private MailSender mailSender=new MailSender(); 

     public void ReSend(){ 
     mailSender.sendMail(listBEeans[i].getEmailContent(),listEmail); 
      //able to pass the content and listEmails correctly 

} 

我錯過了我的動作bean中的任何配置嗎?謝謝

+1

這個問題是不是JSF相關。 –

回答

0

問題是您在構造函數中使用的模板是null。它不可能是。

SimpleMailMessage代碼:

public SimpleMailMessage(SimpleMailMessage original) { 
    Assert.notNull(original, "The 'original' message argument cannot be null"); 
... 

檢查你的bean templateMessage是真正設定爲某事或從MailSender刪除它,並使用無參數的構造函數。

+0

,謝謝你的response.i試圖測試沒有參數構造函數,仍然得到這個問題, –

+0

好吧,你檢查了爲什麼你的bean'templateMessage'配置在'一片空白? – elias

+0

是的,在一個後端類中使用了相同的函數,其中mailSender類使用@Resource annotation進行初始化。我嘗試使用與我的前端動作類相同的方式,但它引發了一個異常,如'myactionbean未在此上下文中綁定(javax .naming.NameNotFoundException :) –

1

它看起來像你的bean創建一個本地引用到MailSender而不是使用注入的依賴項(假設你創建了一個)。某處你應該有:

AnObject 
{ 
... 
MailSender mailsender = (MailSender)context.getBean("mailSender"); 
... 
} 

然後你的bean應該說:

private MailSender = AnObject.getMailSender();