0

我使用spring 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>

邮件发件人类:

  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 中的任何配置吗?谢谢

4

2 回答 2

1

看起来您的 bean 正在创建对 MailSender 的本地引用,而不是使用注入的依赖项(假设您创建了一个)。你应该有的地方:

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

然后你的 bean 应该说:

private MailSender = AnObject.getMailSender();
于 2013-08-30T20:40:50.813 回答
0

问题是您在构造函数中使用的模板是null. 它不可能是。

从代码SimpleMailMessage

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

检查您的 bean templateMessage 是否真的设置为某些内容或将其从 MailSender 中删除并使用无参数构造函数。

于 2012-09-03T17:31:32.103 回答