Spring3整合邮件之JavaMail

Spring3整合JavaMail只需要往Spring工程里面加入mail.jar然后配置JavaMailSenderImpl这个Bean,然后通过这个Bean的实例去调用他的send方法就可以发送邮件了,我这里使用的是1.4.5版本。

下面的demo可以额发送普通文本邮件,Html脚本邮件和Mime附件邮件:

Xml代码   收藏代码
  1. <bean id="mail" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
  2.         <!-- SMTP发送邮件的服务器的IP和端口 -->  
  3.         <property name="host" value="smtp.163.com"/>  
  4.         <property name="port" value="25"/>  
  5.           
  6.         <!-- 登陆SMTP邮件发送服务器的用户名和密码 -->  
  7.         <property name="username" value="...@163.com"/>  
  8.         <property name="password" value="password"/>  
  9.           
  10.         <!-- 获得邮件会话属性,验证登录邮件服务器是否成功-->  
  11.         <property name="javaMailProperties">  
  12.              <props>  
  13.                  <prop key="mail.smtp.auth">true</prop>  
  14.                  <prop key="mail.smtp.timeout">25000</prop>  
  15.              </props>  
  16.         </property>  
  17. </bean>  

Java代码   收藏代码
  1. public class MailSenderFactory {  
  2.     // 获取JavaMailSender bean  
  3.     public static JavaMailSender getJavaMailSender() {  
  4.         ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-mail.xml");  
  5.         return (JavaMailSender) context.getBean("mail");  
  6.     }  
  7. }  

Java代码   收藏代码
  1. public interface Send {  
  2.     public void send();  
  3. }  

Java代码   收藏代码
  1. /** 
  2.  * @author Chou 
  3.  * @since 2012-09-16 
  4.  * 文本邮件 
  5.  * SimpleMailMessage只能用来发送text格式的邮件 
  6.  */  
  7. public class SendTextMail implements Send{  
  8.       
  9.     public void send() {  
  10.         System.out.println("准备发送文本形式的邮件...");  
  11.   
  12.         SimpleMailMessage mail1 = new SimpleMailMessage();  
  13.         SimpleMailMessage mail2 = new SimpleMailMessage();  
  14.   
  15.         mail1.setFrom("...@163.com");// 发送人名片  
  16.         mail1.setTo("...@sina.com");// 收件人邮箱  
  17.         mail1.setSubject("Spring Mail 测试邮件");// 邮件主题  
  18.         mail1.setSentDate(new Date());// 邮件发送时间  
  19.         mail1.setText("Hello,Boy,This is my Spring Mail,哈哈!!");  
  20.   
  21.         // 复制邮件  
  22.         mail1.copyTo(mail2);  
  23.         mail2.setSubject("这是一封复制的邮件");  
  24.   
  25.         // 群发  
  26.         SimpleMailMessage[] mailMessages = { mail1, mail2 };  
  27.         MailSenderFactory.getJavaMailSender().send(mailMessages);  
  28.   
  29.         System.out.println("文本形式的邮件发送成功!!!");  
  30.     }  
  31. }  

Java代码   收藏代码
  1. /** 
  2.  * @author Chou 
  3.  * @since 2012-09-16 
  4.  * HTML脚本形式邮件MimeMessage需要设置编码 
  5.  */  
  6. public class SendHtmlMail implements Send{  
  7.       
  8.     public void send() {  
  9.         JavaMailSender mailSender = MailSenderFactory.getJavaMailSender();  
  10.         MimeMessage mimeMessage = mailSender.createMimeMessage();  
  11.         try {  
  12.             System.out.println("HTML脚本形式邮件正在发送...");  
  13.             //设置utf-8或GBK编码,否则邮件会有乱码  
  14.             MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true"UTF-8");  
  15.             //设置发送人名片  
  16.             helper.setFrom("...@163.com");  
  17.             //设置收件人名片和地址  
  18.             helper.setTo(new InternetAddress("\"" + MimeUtility.encodeText("sina邮箱") + "\" <...@sina.com>"));// 发送者  
  19.             // 邮件发送时间  
  20.             helper.setSentDate(new Date());  
  21.             //设置回复地址  
  22.             helper.setReplyTo(new InternetAddress("...@sina.com"));  
  23.             //设置抄送的名片和地址  
  24.             helper.setCc(InternetAddress.parse(MimeUtility.encodeText("抄送人001") + " <...@163.com>," + MimeUtility.encodeText("抄送人002") + " <...@foxmail.com>"));  
  25.             //主题  
  26.             helper.setSubject("챔피언쉽");  
  27.             // 邮件内容,注意加参数true,表示启用html格式  
  28.             helper.setText("<html><head></head><body><h1>hello!!我是乔布斯</h1></body></html>",true);  
  29.             //发送  
  30.             mailSender.send(mimeMessage);  
  31.         } catch (Exception e) {  
  32.             e.printStackTrace();  
  33.         }  
  34.         System.out.println("HTML脚本形式邮件发送成功!!!");  
  35.     }  
  36. }  

Java代码   收藏代码
  1. /** 
  2.  * @author Chou 
  3.  * @since 2012-09-16 
  4.  * 发送带附件和图片的邮件 
  5.  * MimeMessage需要设置编码 
  6.  */  
  7. public class SendFileMail implements Send{  
  8.       
  9.     public void send() {  
  10.         JavaMailSender mailSender = MailSenderFactory.getJavaMailSender();  
  11.         MimeMessage mimeMessage = mailSender.createMimeMessage();  
  12.         try {  
  13.             System.out.println("带附件和图片的邮件正在发送...");  
  14.             //设置utf-8或GBK编码,否则邮件会有乱码  
  15.             MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true"UTF-8");  
  16.               
  17.             //设置发送人名片  
  18.             helper.setFrom("...@163.com");  
  19.               
  20.             //设置收件人邮箱  
  21.             helper.setTo(new InternetAddress("\"" + MimeUtility.encodeText("sina邮箱") + "\" <...@sina.com>"));  
  22.               
  23.             //设置回复地址  
  24.             helper.setReplyTo(new InternetAddress("...@qq.com"));  
  25.               
  26.             //设置收件人抄送的名片和地址(相当于群发了)  
  27.             helper.setCc(InternetAddress.parse(MimeUtility.encodeText("邮箱001") + " <...@163.com>," + MimeUtility.encodeText("邮箱002") + " <...@foxmail.com>"));  
  28.               
  29.             // 主题  
  30.             helper.setSubject("챔피언쉽");  
  31.             // 邮件内容,注意加参数true,表示启用html格式  
  32.             helper.setText("<html><head></head><body><h1>hello!!我是乔布斯   챔피언쉽</h1></body></html>",true);  
  33.             // 加入附件  
  34.             helper.addAttachment(MimeUtility.encodeText("附件"), new File("E:\\WALL\\Style\\卡通.jpg"));  
  35.             // 加入插图  
  36.             helper.addInline(MimeUtility.encodeText("pic01"), new File("E:/WALL/Style/卡通.jpg"));  
  37.             //发送  
  38.             mailSender.send(mimeMessage);  
  39.         } catch (Exception e) {  
  40.             e.printStackTrace();  
  41.         }  
  42.         System.out.println("带附件和图片的邮件发送成功!!!");  
  43.     }  
  44. }  

其实在实际项目中,用到的功能基本都是群发邮件,helper.setCc()可以设置抄送人地址,相当于你客户端只发送一封邮件,然后邮件服务器会帮你抄送给多人实现群发,当然,如果需求是不用抄送,要每人发一封,那么就要考虑多线程了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值