2

我正在尝试使用 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());
        }
    }

}

不知道为什么它不起作用。我不知道出了什么问题。我添加了所有依赖项,例如邮件。

4

3 回答 3

1
SimpleMailMessage msg = new SimpleMailMessage(this.message);

我认为this.message是空的。你应该先初始化它。

于 2013-08-07T09:23:04.223 回答
0

我也遇到了同样的问题。实际上,您需要初始化 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;
}
于 2018-08-11T15:18:00.457 回答
-1

下面的语句解决了我的空错误:

SimpleMailMessage smm=new SimpleMailMessage(); 
于 2014-04-07T14:49:21.270 回答