使用Spring发送邮件(一)

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

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

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

 

一、发送纯文本邮件

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

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("[email protected]");
  msg.setTo("[email protected]");
  msg.setReplyTo("[email protected]");
  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的配置如下:

  

<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。

    

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("[email protected]");
		helper.setTo("[email protected]");
		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);

 

四、发送内嵌邮件

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

   

public void sendInlineMail(JavaMailSender sender) throws MessagingException{
		MimeMessage msg=sender.createMimeMessage();
	//创建MimeMessageHelper实例,第2个参数表示是否为multipart邮件,第3个参数表示MimeMessage的编码
		MimeMessageHelper helper=new MimeMessageHelper(msg,true,"utf8");//true表示为multipart邮件
		helper.setFrom("[email protected]");
		helper.setTo("[email protected]");
		helper.setSubject("注册成功");
		String htmlText="<html><head>"+
		"<meta http-equiv=\"content-type\" content=\"text/html;charset=utf8\">"+
		"</head><body>" +
		"恭喜你在淘宝网:<font color='red' size='30'>注册成功</font><br>"+
		"<div><img src=\"cid:img01\"></img></div>"+
		"</body></html>";
		
		//设置邮件内容,第2个参数为true表示该邮件为html邮件
		helper.setText(htmlText,true); 
		
		ClassPathResource img=new ClassPathResource("2.jpg");
		helper.addInline("img01",img);//添加内嵌文件,第1个参数为cid标识这个文件,第2个参数为资源
		//helper.addInline(String contentId,Resource resource);
		
		sender.send(msg);
		System.out.println("成功发送内嵌邮件!");
	}

    运行方法与纯文本一样:

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

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

 

 

 

 

   

 

你可能感兴趣的:(spring,html,bean,xml)