现在的位置: 首页 > 综合 > 正文

\t\tspring的javaMail实现

2014年07月16日 ⁄ 综合 ⁄ 共 7310字 ⁄ 字号 评论关闭

注意:

1、先在项目中导入mail.jar,activation.jar包(可到网上下载)

2、发信人地址需开通smtp服务(登陆邮箱后,找到:设置--》账户--》POP3/IMAP/SMTP服

spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="mailSender" <property name="host">
    <value>smtp.126.com</value>
   </property>
   <property name="javaMailProperties">
    <props>
     <prop key="mail.smtp.auth">true</prop>
     <prop key="mail.smtp.timeout">25000</prop>
    </props>
   </property>
   <property name="username">
    <value>xiaojunwei_1987</value>
   </property>
   <property name="password">
    <value>8888888888888</value>
   </property>
</bean>
</beans>

java类:

package com.techcenter.mail;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class SpringMail {

//读取spring配置文件
    static ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext-init.xml");
    //强制返回spring邮件发送器
    static JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
    //模拟Email发送信息
    static String toAddress1 = "xiaojunwei_1987@126.com";
    static String toAddress2 = "593106671@qq.com";
    static String fromAddress = "xiaojunwei_1987@126.com";
    static String subject = "spring发送文本邮件例子";
    static String text = "测试spring发送文本邮件例子!";
    static List<String> toAddressList = new ArrayList<String>();
    static List<String> files = new ArrayList<String>();
   
    /**
* 验证文本类型邮件信息是否完整并初始化发送信息
* @param toAddressList 收信人地址列表(必填)
* @param fromAddress 发信人地址(必填)
* @param subject   主题 (可以为空)
* @param text    内容 (必填)
* @return      boolean类型的值
* @throws MailException 声明异常
*
*/
private static void checkTextEmailMsg(List<String> toAddressList,String fromAddress,
   String subject,String text) throws MailException{  
   //声明spring的简单邮件消息
   SimpleMailMessage mail = new SimpleMailMessage();   
   //判断收信人地址,发信人地址,邮件内容是否为空
   if (toAddressList != null && toAddressList.size() > 0 ) {   
    int size = toAddressList.size();//
    //把收信人集合转化为数组
    String [] arrayAddress = toAddressList.toArray(new String[size]);   
    //设置收信人地址
    mail.setTo(arrayAddress);      
   } else {
    System.out.println("收信人地址为空!");
    return ;
   }
   if ( fromAddress != null ) {
    //设置发信人地址
    mail.setFrom(fromAddress);
    //设置邮件主题
    mail.setSubject(subject);   
   }else {
    System.out.println("发信人地址为空!");
    return ;
   }
   if ( text != null ) {
    //设置邮件内容
    mail.setText(text);
    //用邮件发送器发送
    sender.send(mail);
    System.out.println("发送文本类型邮件成功!");
   }else {
    System.out.println("内容为空!");
    return ;
   }  
}

/**
* 发送文本类型邮件
* @param toAddressList 收信人地址列表(必填)
* @param fromAddress 发信人地址(必填)
* @param subject   主题 (可以为空)
* @param text    内容 (必填)
*/
public static void sendTextMail(List<String> toAddressList,String fromAddress,String subject,String text) {
    try {   
       //验证email信息是否完整      
       checkTextEmailMsg(toAddressList, fromAddress, subject, text);        
    }catch(MailException e){
       System.out.println("发送邮件失败!原因:"+e.getMessage());
    }
    }

/**
* 发送带附件的邮件
* @param toAddressList 收信人地址列表(必填)
* @param fromAddress 发信人地址(必填)
* @param subject   主题 (可以为空)
* @param text    内容 (必填)
* @param files    附件地址集合 (必填)
* @throws Exception 声明异常
*/
    public static void sendMimeMessage(final List<String> toAddressList,final String fromAddress,final String subject,
       final String text,final List<String> files) throws Exception {           
    //扩展信息介质接口,需自己实现接口中的方法
    try {
       MimeMessagePreparator mimeMail = new MimeMessagePreparator() {
                public void prepare(MimeMessage mimeMessage) throws MessagingException {                      
                //设置收信人地址           
                if ( toAddressList != null && toAddressList.size() > 0 ) {
                   Iterator<String> iterator = toAddressList.iterator();
                   while (iterator.hasNext()) {               
                    mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(iterator.next().toString()));
                   }
                  
                }else {
                   System.out.println("收件人地址为空!");
                   return ;
                }
                if ( fromAddress != null ) {              
                   mimeMessage.setFrom(new InternetAddress(fromAddress));
                }
                else {
                   System.out.println("发信人地址为空!");
                   return ;
                }
                if ( subject != null ) {              
                   mimeMessage.setSubject(subject);       
                }
                    //多部件的,可以看做一个邮件容器,包含正文、附件等
                    Multipart mp = new MimeMultipart();              
                    //向Multipart添加正文
                    MimeBodyPart content = new MimeBodyPart();
                    if ( text != null ) {               
                    content.setText(text);              
                    }
                    //向MimeMessage添加(Multipart代表正文)
                    mp.addBodyPart(content);
                    //向Multipart添加附件,可以添加多个附件;              
                   /* 本地测试附件
                    files.add("e://呵呵.txt");
                    String path = System.getProperty("user.dir");
                    System.out.println(path);
               files.add(path+"\\src\\test\\java\\com\\techcenter\\mail\\SpringMail.java");
                   */         
                    if ( files != null && files.size() > 0 ) {               
                    Iterator<String> it = files.iterator();
                    //遍历List,把附件放到邮件容器里面
                    while(it.hasNext()) {
                       MimeBodyPart attachFile = new MimeBodyPart();
                       String filename = it.next().toString();
                       //文件数据源
                       FileDataSource fds = new FileDataSource(filename);
                       //数据处理器
                       attachFile.setDataHandler(new DataHandler(fds));
                       //设置文件名                 
                       attachFile.setFileName(fds.getName());
                       mp.addBodyPart(attachFile);
                    }              
                    }
                    else {
                   System.out.println("附件为空!");
                   return ;
                }
                    files.clear();              
                    //向Multipart添加MimeMessage
                    mimeMessage.setContent(mp);
                    mimeMessage.setSentDate(new Date());               
                }
            };
          //发送带附件的邮件
            sender.send(mimeMail);      
            System.out.println("成功发送带附件邮件!");   
    }catch (Exception e) {
    System.out.println("发送带附件的邮件失败,原因:"+e.getMessage());
   }
         
    }
   
    /**
     * 测试发送邮件方法
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
    toAddressList.add(toAddress1);
    //测试发送只有文本信息的简单测试
    sendTextMail(toAddressList, fromAddress, subject, text);   
    //测试发送带附件的邮件
    files.add("e://呵呵.txt");
    sendMimeMessage(toAddressList, fromAddress, subject, text, files) ;
    }
}

【上篇】
【下篇】

抱歉!评论已关闭.