前言:项目中要做一个发送邮件的功能,在网上搜了一些代码,说的都不是很完善。自己就整理了一个可以运行的项目。需要注意的地方是:如果发送人的邮箱是qq邮箱,那么需要在 设置->账户里面把√打上。spring里面的
    <property name="host">
    
         <value>smtp.126.com</value>
    
        </property>
    
     要配置成smtp.qq.com
  
步骤如下:
用spring做一个javaMail功能。
1、先建一个项目。java项目和web项目均可。
2、需要引入的jar包有:mail.jar,activation.jar(我用的是maven搭建的项目,在pom.xml中依赖了那两个jar包)
3、在MyEclipse的项目里面加入spring的jar包
4、在项目中的 applicationContext-init.xml (名字可以任意改)文件中加入如下代码:
    <?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>********</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.SimpleMailMessage;
    
     import org.springframework.mail.javamail.JavaMailSender;
    
     import org.springframework.mail.javamail.MimeMessagePreparator;
    
     public class SpringMail {
    
     public static void main(String[] args) throws Exception {
    
     //读取spring配置文件
    
             ApplicationContext ctx = new ClassPathXmlApplicationContext("
    
      applicationContext-init.xml
    
     ");
    
             //强制返回spring邮件发送器
    
             JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
    
             //创建对象并初始化
    
             SpringMail springMail = new SpringMail();           
    
         //测试发送只有文本信息的简单测试
    
         springMail.sendTextMail(sender);       
    
         //测试发送带附件的邮件
    
         springMail.sendMimeMessage(sender);        
    
         }   
    
         private void sendTextMail(JavaMailSender sender) throws Exception {
    
         //声明spring的简单邮件消息
    
             SimpleMailMessage mail = new SimpleMailMessage();
    
             mail.setTo("
    
      237888386@qq.com
    
     ");       
    
             mail.setFrom("
    
      xiaojunwei_1987@126.com
    
     ");
    
             mail.setSubject("test by amigo");
    
             mail.setText("spring Mail的简单测试");
    
             sender.send(mail);       
    
             System.out.println("成功发送文本文件!");        
    
         }   
    
         private void sendMimeMessage(final JavaMailSender sender) throws Exception {
    
             //附件文件集合
    
             final List files = new ArrayList();
    
            //扩展信息介质接口,需自己实现接口中的方法
    
             MimeMessagePreparator mimeMail = new MimeMessagePreparator() {
    
                 public void prepare(MimeMessage mimeMessage) throws MessagingException {
    
                 //设置接收者信息 ,接收方式:直接发送,接收地址       
    
                    // mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(""));
    
                     mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("
    
      237888386@qq.com
    
     "));
    
                     mimeMessage.setFrom(new InternetAddress("
    
      xiaojunwei_1987@126.com
    
     "));
    
                     mimeMessage.setSubject("Spring发送带附件的邮件", "gb2312");        
    
                     //多部件的,可以看做一个邮件容器,包含正文、附件等
    
                     Multipart mp = new MimeMultipart();               
    
                     //向Multipart添加正文
    
                     MimeBodyPart content = new MimeBodyPart();
    
                     content.setText("内含spring邮件发送的例子,请查收!");               
    
                     //向MimeMessage添加(Multipart代表正文)
    
                     mp.addBodyPart(content);
    
                     //向Multipart添加附件,可以添加多个附件;
    
                     String path = System.getProperty("user.dir");
    
                     System.out.println(path);
  
              
    
            // 这里是附件的路径,自己测试的时候可能要改的哦!
      
    
                     files.add("e://hehe.txt"); 
    
                     files.add(path+"
    
      \\src\\test\\java\\com\\techcenter\\mail\\SpringMail.java
    
     ");    
    
                     Iterator 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);
    
                     }               
    
                     files.clear();               
    
                     //向Multipart添加MimeMessage
    
                     mimeMessage.setContent(mp);
    
                     mimeMessage.setSentDate(new Date());
    
                 }
    
             };
    
             //发送带附件的邮件
    
             sender.send(mimeMail);       
    
             System.out.println("成功发送带附件邮件!");
    
         }
    
     }
  

