转自:http://hrz520520.blog.hexun.com/29777240_d.html
第二次看<Spring2.0技术手册>,第二次读到了9.2章节"邮件"
终于知道了如何用Spring来编写代码发送邮件.
先看看书上的例子代码:/
public class SimpleMailDemo {
public static void main(String[] args) {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl() ;
// 设置 Mail Server
senderImpl.setHost("smtp.sina.com.cn") ;
// 建立邮件消息
SimpleMailMessage mailMessage = new SimpleMailMessage() ;
// 设置邮件消息:收件人,寄件人,主题与正文
mailMessage.setTo(someone@gmail.com) ;
mailMessage.setFrom(test@sina.com) ;
mailMessage.setSubject("Test JavaMail") ;
mailMessage.setText("This is a test !!! send mail with spring!") ;
// 传送邮件
senderImpl.send(mailMessage) ;
System.out.println("邮件传送OK...") ;
这段代码一般会报错,因为:
当今mail服务器大多都是通过认证才能发信的,现在的网上介绍JavaMail发信的文章都没有深入到有关认证的方面,除非自己装一个open relay的mail服务器.
所以应该加上这段代码
senderImpl.setUsername("test@sina.com") ; // 根据自己的情况,设置username
senderImpl.setPassword("123456") ; // 根据自己的情况, 设置password
Properties prop = new Properties() ;//很关键,此行。
prop.put("mail.smtp.auth", "true") ;// 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
senderImpl.setJavaMailProperties(prop) ;
运行程序,OK,邮件发送成功!
还有:这是从<Spring2.0技术手册>的作者林信良的播客上摘录下来的:
#Levin 发表于2006-08-11 09:59:00 IP: 60.63.93.*
林老师,在您的《Spring技术手册》第九章9.2邮件服务SimpleMailDemo中,程序执行时抱错,需要什么
验证,您能帮解决一下吗?
源程序:
package com.eimagesoft;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.SimpleMailMessage;
public class SimpleMail {
public static void main(String[] args) throws Exception {
JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
senderImpl.setHost("smtp.163.com");
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setTo("zhanganjie001@sina.com.cn");
mailMessage.setFrom("zhanganjie001@163.com");
mailMessage.setSubject("Test");
mailMessage.setText("This is a test!!!");
senderImpl.send(mailMessage);
System.out.println("邮件传送OK..");
}
}
下面是错误提示:
Exception in thread "main" org.springframework.mail.MailSendException: Could not send mails:
553 authentication is required,smtp5,wKjRECjAIgEe4NtEmNYpAQ==.16534S2
com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is
required,smtp5,wKjRECjAIgEe4NtEmNYpAQ==.16534S2
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1275)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:895)