使用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. }  
package com.bb.spring.email;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
public class MailService {
 
 public void sendSimpleMail(JavaMailSender sender){
  SimpleMailMessage msg=new SimpleMailMessage();
  msg.setFrom("dongkk@sina.com");
  msg.setTo("dongkk@sina.com");
  msg.setReplyTo("dongkk@sina.com");
  msg.setSubject("使用Spring发送邮件");
  msg.setText("test Spring发送邮件");
  
  sender.send(msg);
  System.out.println("成功发送!"); 
 }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  ApplicationContext ctx = new FileSystemXmlApplicationContext(   
        "src/applicationContext.xml"); 
  JavaMailSender sender=(JavaMailSender) ctx.getBean("mailsender");
  
  MailService ms=new MailService();
  ms.sendSimpleMail(sender);
 }
}

   在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>  
<bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
   <property name="host" value="smtp.sina.com.cn"/>
   <property name="username" value="dongkk"/>
   <property name="password" value="123456"/>
   <property name="javaMailProperties">  
            <props>  
                <prop key="mail.smtp.auth">true</prop>  
                <prop key="mail.smtp.timeout">25000</prop>  
            </props>  
   </property>  
</bean>

    此时可以发送成功。

 

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

    运行方法与纯文本一样:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值