posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          spring mail發送

          Posted on 2007-05-11 17:58 semovy 閱讀(1182) 評論(0)  編輯  收藏 所屬分類: spring

          package com.action;

          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.FileSystemXmlApplicationContext;
          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 {
                  ApplicationContext ctx = new FileSystemXmlApplicationContext(
                          "applicationContext.xml");
                  JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
                  SpringMail springMail = new SpringMail();
                 
                  //測試發送只有文本信息的簡單測試
                  springMail.sendTextMail(sender);
                 
                  //測試發送帶附件的郵件
                  springMail.sendMimeMessage(sender);
              }
             
              /** *//**
               * 測試發送只有文本信息的簡單測試
               * @param sender 郵件發送器
               * @throws Exception
               */
              private void sendTextMail(JavaMailSender sender) throws Exception {
                  SimpleMailMessage mail = new SimpleMailMessage();
                  mail.setTo("superman_wshm@126.com");
                  mail.setFrom("superman_wshm@126.com");
                  mail.setSubject("test by amigo");
                  mail.setText("spring Mail的簡單測試");
                  sender.send(mail);
                 
                  System.out.println("成功發送文本文件!");
              }
             
              /** *//**
               * 發送帶附件的郵件
               * @param sender 郵件發送器
               * @throws Exception
               */
              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("superman_wshm@126.com"));
                          mimeMessage.setFrom(new InternetAddress("superman_wshm@126.com"));
                          mimeMessage.setSubject("Spring發送帶附件的郵件", "gb2312");
                         
                          Multipart mp = new MimeMultipart();
                         
                          //向Multipart添加正文

                          MimeBodyPart content = new MimeBodyPart();
                          content.setText("內含spring郵件發送的例子,請查收!");
                         
                          //向MimeMessage添加(Multipart代表正文)
                          mp.addBodyPart(content);
                          files.add("com/action/SpringMail.java");
                          files.add("applicationContext.xml");
                         
                          //向Multipart添加附件
                          Iterator it = files.iterator();
                          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("成功發送帶附件郵件!");
              }

          }


          Spring配置文件applicationContext.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "

          <beans>
           <bean id="mailSender"
            class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <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>superman_wshm</value>
            </property>
            <property name="password">
             <value>******</value>
            </property>
           </bean>


          </beans>


           剛才發現一bug,當附件名為中文時,會出現中文亂碼問題,對sendMimeMessage方法進行了部分修改,如下:
             

                         sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
                          files.add(
          "src/SpringMail.java");
                          files.add(
          "src/applicationContext.xml");
                          files.add(
          "src/謝星星.xml");
                          
                          
          //向Multipart添加附件
                          Iterator it = files.iterator();
                       
          while (it.hasNext()) {
                              MimeBodyPart attachFile 
          = new MimeBodyPart();
                              String filename 
          = it.next().toString();
                              FileDataSource fds 
          = new FileDataSource(filename);
                              attachFile.setDataHandler(
          new DataHandler(fds));
                              attachFile.setFileName(
          "=?GBK?B?"+enc.encode(fds.getName().getBytes())+"?=");
                              mp.addBodyPart(attachFile);
                          }
          主站蜘蛛池模板: 开原市| 宜兰县| 阿拉尔市| 元朗区| 十堰市| 昭觉县| 额敏县| 张家口市| 瑞丽市| 于都县| 孟连| 中卫市| 平武县| 潍坊市| 盐池县| 屏山县| 太原市| 公安县| 正定县| 永吉县| 新绛县| 竹山县| 桃园县| 饶阳县| 敖汉旗| 鹤岗市| 郸城县| 织金县| 榆中县| 广元市| 通海县| 思茅市| 铜梁县| 余干县| 日照市| 上虞市| 前郭尔| 喜德县| 五大连池市| 于都县| 清原|