欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring mail

程序员文章站 2022-07-14 13:49:38
...
转自: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)