簡體   English   中英

java.lang.IllegalArgumentException:“原始”消息參數不能為null

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

我正在嘗試使用Spring發送電子郵件。 看我的代碼:

public class Provider {

    private MailSender mailSender;
    private SimpleMailMessage message;

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void setMessage(SimpleMailMessage message) {
        this.message = message;
    }

    public static String getTemplateName() {
        return "mainLayout/layout.jsp";
    }


    public void placeOrder() {

        // ... * Do the business calculations....
        // ... * Call the collaborators to persist the order

        // Create a thread safe "sandbox" of the message
        SimpleMailMessage msg = new SimpleMailMessage(this.message);
        msg.setTo("babobka@bk.ru");
        msg.setText("Hello");
        try {
            mailSender.send(msg);
        } catch (MailException ex) {
            // log it and go on
            System.err.println(ex.getMessage());
        }
    }

}

不知道為什么它不起作用。 我不知道怎么了 我添加了所有郵件等郵件。

SimpleMailMessage msg = new SimpleMailMessage(this.message);

我認為this.message為null。您應該首先對其進行初始化。

我也遇到了同樣的問題。 實際上,您需要按以下方式初始化SimpleMailMessage對象。

SimpleMailMessage msg = new SimpleMailMessage();

以下是我的工作代碼,可用來發送郵件。 我建議您嘗試一下。

@Component
public class MailSenderApp {

@Autowired
JavaMailSender mailSender;

public void sendSimpleMail(int id){
        SimpleMailMessage msg = new SimpleMailMessage(); 
        msg.setCc("kumar@gmail.com");
        msg.setTo("kumar@gmail.com");
        msg.setSubject("Simple Message");
        msg.setText("Hello This is sample Mail to test");
    try{
        this.mailSender.send(msg);
    }
    catch(MailException ex) {
        System.err.println(ex.getMessage());            
    }
}

您將需要創建JavaMailSender Bean,就像我在下面的配置代碼片段中所做的那樣。

 /**
 * Mail sender configuration
 * 
 */

@Bean
public JavaMailSender javaMailService() {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    javaMailSender.setHost("host");
    javaMailSender.setPort("port");
    javaMailSender.setUsername("username");
    javaMailSender.setPassword("password");
    javaMailSender.setJavaMailProperties(getMailProperties());
    return javaMailSender;
}

/**
 * Property setters for mail
 * 
 */
private Properties getMailProperties() {
    Properties properties = new Properties();
    properties.setProperty("mail.transport.protocol", "smtp");
    properties.setProperty("mail.smtp.auth", "true");
    properties.setProperty("mail.smtp.starttls.enable", "true");
    properties.setProperty("mail.debug", "true");
    return properties;
}

下面的語句解決了我的null錯誤:

SimpleMailMessage smm=new SimpleMailMessage(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM