隨筆-153  評論-235  文章-19  trackbacks-0
              由于項目里要發(fā)郵件,用了spring 和 velocity 模板。寫下來以后可以看,好記性不如博客。
          版本說明下:
          spring 2.0.6
          velocity 1.5
          javamail 用 spring/lib下的

          1.封裝郵件信息類:
          package com.chenlb.mail;

          import java.util.Map;

          import javax.mail.MessagingException;
          import javax.mail.internet.MimeMessage;

          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;
          import org.apache.velocity.app.VelocityEngine;
          import org.springframework.mail.MailException;
          import org.springframework.mail.javamail.JavaMailSender;
          import org.springframework.mail.javamail.MimeMessageHelper;
          import org.springframework.ui.velocity.VelocityEngineUtils;

          /**
           * 郵件發(fā)送器
           * @作者 chenlb
           * @創(chuàng)建時間 2007-7-28 下午03:35:31 
           
          */
          public class VelocityTemplateMailMessage {

              
          protected final Log logger = LogFactory.getLog(getClass());
              
              
          private JavaMailSender javaMailSender;
              
          private VelocityEngine velocityEngine;
              
          private String from;
              
          private String title;
              
          private String encoding;
              
          private String templateLocation;
              
          private String[] toEmails;
              
          private Map model;


              
          public boolean send() {
                  MimeMessage msg 
          = javaMailSender.createMimeMessage();
                  MimeMessageHelper helper 
          = new MimeMessageHelper(msg);
                  
                  
          try {
                      helper.setFrom(from);
                      helper.setSubject(title);
                      helper.setTo(toEmails);
                      helper.setText(getMessage(), 
          true);   //如果發(fā)的不是html內(nèi)容去掉true參數(shù)
                      javaMailSender.send(msg);
                      
                  } 
          catch (MessagingException e) {
                      
          // TODO 自動生成 catch 塊
                      if(logger.isWarnEnabled()) {
                          logger.warn(
          "郵件信息導(dǎo)常! 郵件標(biāo)題為: "+title);
                      }
                      
          return false;
                      
          //e.printStackTrace();
                  } catch (MailException me) {
                      
          // TODO: handle exception
                      if(logger.isWarnEnabled()) {
                          logger.warn(
          "發(fā)送郵件失敗! 郵件標(biāo)題為: "+title);
                      }
                      
          return false;
                  }
                  
          return true;    
              }
              
              
              
          /**
               * 郵件模板中得到信息
               * 
          @return 返回特發(fā)送的內(nèi)容
               
          */
              
          private String getMessage() {
                  
          return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, 
                          templateLocation, encoding, model);
              }

              
          private String[] createToEmail(String to) {
                  
          return new String[] {to};
              }
              
              
          public void setToEmail(String to) {
                  setToEmails(createToEmail(to));
              }
              
              
          public void setJavaMailSender(JavaMailSender javaMailSender) {
                  
          this.javaMailSender = javaMailSender;
              }
              
              
          public void setVelocityEngine(VelocityEngine velocityEngine) {
                  
          this.velocityEngine = velocityEngine;
              }

              
          public void setEncoding(String encoding) {
                  
          this.encoding = encoding;
              }

              
          public void setModel(Map model) {
                  
          this.model = model;
              }

              
          public void setTemplateLocation(String templateLocation) {
                  
          this.templateLocation = templateLocation;
              }

              
          public void setTitle(String title) {
                  
          this.title = title;
              }

              
          public void setToEmails(String[] toEmails) {
                  
          this.toEmails = toEmails;
              }

              
          public void setFrom(String from) {
                  
          this.from = from;
              }

              
          public String getTemplateLocation() {
                  
          return templateLocation;
              }
          }

          2.spring配置文件,applictionContext-mail.xml:
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
                  "dtd/spring-beans-2.0.dtd"
          >
          <!-- http://www.springframework.org/ -->
          <beans>

          <!-- 屬性文件加載 -->
              
          <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                  
          <property name="locations">
                    
          <list>
                        
          <value>classpath:mail.properties</value>
                    
          </list>
                
          </property>
              
          </bean>

          <!-- 郵件發(fā)送器 -->
              
          <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
                  
          <property name="host" value="${mail.host}" />
                  
          <property name="username" value="${mail.username}" />
                  
          <property name="password" value="${mail.password}" />
                  
          <property name="defaultEncoding" value="UTF-8"></property>
                  
          <property name="javaMailProperties">
                      
          <props>
                          
          <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                          
          <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
                      
          </props>
                  
          </property>
              
          </bean>
              
              
          <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
                  
          <property name="resourceLoaderPath" value="classpath:velocity"></property>
              
          </bean>
              
              
          <bean id="templateMail" class="com.chenlb.mail.VelocityTemplateMailMessage">
                  
          <property name="javaMailSender" ref="mailSender"></property>
                  
          <property name="from" value="${mail.from}"></property>
                  
          <property name="encoding" value="UTF-8"></property>
                  
          <property name="templateLocation" value="test.vm"></property>
                  
          <property name="velocityEngine" ref="velocityEngine"></property>
                  
          <property name="title" value="wwww.aygfsteel.com/chenlb"></property>
              
          </bean>
              
          </beans>
          說明:模板文件放到classpath的velocity目錄下,可自行改。

          3.發(fā)送者郵件信息,mail.properties(classpath位置):
          mail.from=yourname@126.com
          mail.host
          =smtp.126.com
          mail.password
          =yourpassword
          mail.smtp.auth
          =true
          mail.smtp.timeout
          =25000
          mail.username
          =yourname

          4.模板文件,text.vm(classpath的velocity目錄下):
          你好!${me} 這是模板生成的郵件。

          5.使用:
          VelocityTemplateMailMessage vtmm = (VelocityTemplateMailMessage) context.getBean("templateMail");
          Map
          <String, String> data = new HashMap<String, String>();
          data(
          "me","yourname");
          vtmm.setModel(data);
          vtmm.setToMail(
          "yourOtherMail@163.com");
          vtmm.setTitle(
          "mail with veloctiy and spring");
          vtmm.send();

           

          看下是否收到郵件了。^_^

          posted on 2007-08-21 19:43 流浪汗 閱讀(3332) 評論(6)  編輯  收藏 所屬分類: OpenSource

          評論:
          # re: send email with velocity and spring 完整示例[未登錄] 2007-11-16 20:41 | silent

          能夠完整打包發(fā)給我嗎..非常謝謝啊...  回復(fù)  更多評論
            
          # re: send email with velocity and spring 完整示例 2008-07-03 10:41 | andyjames
          學(xué)習(xí)了 多多指教  回復(fù)  更多評論
            
          # re: send email with velocity and spring 完整示例 2009-09-04 14:03 | Wangzi
          博主不厚道,不提供下載

          我的郵箱是yhjhoo@163.com,麻煩博主發(fā)我一份吧  回復(fù)  更多評論
            
          # re: send email with velocity and spring 完整示例 2009-09-20 13:47 | 豆?jié){包子
          非常感謝,正好需要。
          測試用Google郵箱發(fā)送失敗,換了QQ郵箱就成功了。  回復(fù)  更多評論
            
          # re: send email with velocity and spring 完整示例 2010-06-10 16:34 | dylan
          能給我也傳一份么?
          hpsh2006@163.com  回復(fù)  更多評論
            
          # re: send email with velocity and spring 完整示例 2010-12-27 12:56 | 杰杰
          @dylan
          1021938637@qq.com ^^謝發(fā)一下  回復(fù)  更多評論
            
          主站蜘蛛池模板: 顺平县| 富源县| 连江县| 威宁| 稻城县| 吉林市| 兴海县| 安徽省| 淅川县| 北流市| 兰坪| 林芝县| 禄劝| 彭阳县| 江口县| 米泉市| 新竹市| 澄城县| 清镇市| 南部县| 郴州市| 尉氏县| 逊克县| 台南县| 临湘市| 海宁市| 区。| 吉林省| 张掖市| 福鼎市| 崇信县| 新田县| 开远市| 乌拉特中旗| 崇阳县| 石河子市| 五常市| 高密市| 洛阳市| 海丰县| 邛崃市|