打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Spring发送邮件(一)

      Spring对发送邮件提供了一个抽象层,对接收邮件没有提供额外的支持。Spring在org.springframework.mail包的MailMessage和MailSender这两个高层抽象层接口描述了邮件消息和发送者。

       Spring通过MailSender的子接口JavaMailSender提供了发送负责邮件的功能。JavaMailSender类实现了该子接口,支持JavaMail的MimeMessage和Spring的MailMessage。

       MimeMessageHelper是MimeMessage的封装类,提供了编辑MimeMessage的方法,提供了设置html邮件内容、内嵌文件(如图片文件、音频文件等)及邮件附件的支持。

 

一、发送纯文本邮件

      在Spring中,使用JavaMailSenderImpl发送纯文本邮件。

Java代码
 
  1. package com.bb.spring.email;   
  2. import org.springframework.context.ApplicationContext;   
  3. import org.springframework.context.support.FileSystemXmlApplicationContext;   
  4. import org.springframework.mail.SimpleMailMessage;   
  5. import org.springframework.mail.javamail.JavaMailSender;   
  6. public class MailService {   
  7.     
  8.  public void sendSimpleMail(JavaMailSender sender){   
  9.   SimpleMailMessage msg=new SimpleMailMessage();   
  10.   msg.setFrom("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");   
  11.   msg.setTo("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");   
  12.   msg.setReplyTo("<A href="mailto:dongkk@sina.com">dongkk@sina.com</A>");   
  13.   msg.setSubject("使用Spring发送邮件");   
  14.   msg.setText("test Spring发送邮件");   
  15.      
  16.   sender.send(msg);   
  17.   System.out.println("成功发送!");    
  18.  }   
  19.     
  20.  public static void main(String[] args) {   
  21.   // TODO Auto-generated method stub   
  22.   ApplicationContext ctx = new FileSystemXmlApplicationContext(      
  23.         "src/applicationContext.xml");    
  24.   JavaMailSender sender=(JavaMailSender) ctx.getBean("mailsender");   
  25.      
  26.   MailService ms=new MailService();   
  27.   ms.sendSimpleMail(sender);   
  28.  }   
  29. }  

   在src下的applicationContext.xml中对JavaMailSenderImpl的配置如下:

  

Java代码
 
  1. <bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl">   
  2.    <property name="host" value="smtp.sina.com.cn"/>   
  3.    <property name="username" value="dongkk"/>   
  4.    <property name="password" value="123456"/>   
  5.    <property name="javaMailProperties">     
  6.             <props>     
  7.                 <prop key="mail.smtp.auth">true</prop>     
  8.                 <prop key="mail.smtp.timeout">25000</prop>     
  9.             </props>     
  10.    </property>     
  11. </bean>  

    此时可以发送成功。

dfdfdf

dfdfdfdf

dfdfdfdfdfdfdf

 

二、发送html邮件

      发送html邮件和发送纯文本邮件差不多,但必须用MimeMessage创建邮件消息,可以通过MimeMessageHelper类创建并填充MimeMessage。

    

Java代码
 
  1. public void sendHtmlMail(JavaMailSender sender) throws MessagingException{   
  2.         MimeMessage msg=sender.createMimeMessage();   
  3.     //创建MimeMessageHelper实例,第2个参数表示是否为multipart邮件,第3个参数表示MimeMessage的编码   
  4.         MimeMessageHelper helper=new MimeMessageHelper(msg,false,"utf8");   
  5.         helper.setFrom("dongkk@sina.com");   
  6.         helper.setTo("dongkk@sina.com");   
  7.         helper.setSubject("注册成功");   
  8.         String htmlText="<html><head>"+   
  9.         "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf8\">"+   
  10.         "</head><body>" +   
  11.         "恭喜你在淘宝网:<font color='red' size='30'>注册成功</font>"+   
  12.         "</body></html>";   
  13.            
  14.         //设置邮件内容,第2个参数为true表示该邮件为html邮件   
  15.         helper.setText(htmlText,true);    
  16.            
  17.         sender.send(msg);   
  18.         System.out.println("成功发送html邮件!");     
  19.     }  

    运行方法与纯文本一样:

    MailService ms=new MailService();
    ms.sendHtmlMail(sender);

 

四、发送内嵌邮件

     可以使用JavaMailSender发送MIME类型文件(如音频文件、图片文件)嵌入到邮件体中,需要使用addInline()方法。以嵌入图片为例,首先将一副名称为2.jpg的图片放到src下。

   

Java代码
 
  1. public void sendInlineMail(JavaMailSender sender) throws MessagingException{   
  2.         MimeMessage msg=sender.createMimeMessage();   
  3.     //创建MimeMessageHelper实例,第2个参数表示是否为multipart邮件,第3个参数表示MimeMessage的编码   
  4.         MimeMessageHelper helper=new MimeMessageHelper(msg,true,"utf8");//true表示为multipart邮件   
  5.         helper.setFrom("dongsanbo@sina.com");   
  6.         helper.setTo("dongsanbo@sina.com");   
  7.         helper.setSubject("注册成功");   
  8.         String htmlText="<html><head>"+   
  9.         "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf8\">"+   
  10.         "</head><body>" +   
  11.         "恭喜你在淘宝网:<font color='red' size='30'>注册成功</font><br>"+   
  12.         "<div><img src=\"cid:img01\"></img></div>"+   
  13.         "</body></html>";   
  14.            
  15.         //设置邮件内容,第2个参数为true表示该邮件为html邮件   
  16.         helper.setText(htmlText,true);    
  17.            
  18.         ClassPathResource img=new ClassPathResource("2.jpg");   
  19.         helper.addInline("img01",img);//添加内嵌文件,第1个参数为cid标识这个文件,第2个参数为资源   
  20.         //helper.addInline(String contentId,Resource resource);   
  21.            
  22.         sender.send(msg);   
  23.         System.out.println("成功发送内嵌邮件!");   
  24.     }  

    运行方法与纯文本一样:

    MailService ms=new MailService();
    ms.sendInlineMail(sender);

    可以在邮件中看到嵌入的图片。

 

 

 

 

   

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java发送邮件(图片、附件、HTML)
通过Spring Mail Api发送邮件
使用spring boot发送邮件
springboot(十):邮件服务
使用 Java 发送邮件
JavaMail 深入浅出
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服