JAVA—咖啡館

          ——?dú)g迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
          有時(shí)候當(dāng)我們注冊完的時(shí)候系統(tǒng)會提示有一封郵件發(fā)送到了你的郵箱,如何做呢?
          就要用到spring+velocity+javamail這3個(gè)玩意,其實(shí)只用了spring,因?yàn)槠渌?個(gè)都被spring集成了。
          先看代碼
            1package com.worthtech.app.util;
            2
            3import java.io.File;
            4import java.util.Map;
            5
            6import javax.mail.MessagingException;
            7import javax.mail.internet.MimeMessage;
            8
            9import org.apache.velocity.app.VelocityEngine;
           10import org.springframework.core.io.FileSystemResource;
           11import org.springframework.mail.SimpleMailMessage;
           12import org.springframework.mail.javamail.JavaMailSender;
           13import org.springframework.mail.javamail.MimeMessageHelper;
           14import org.springframework.ui.velocity.VelocityEngineUtils;
           15
           16public class MailSenderService {
           17    private JavaMailSender mailSender;//spring配置中定義
           18    private VelocityEngine velocityEngine;//spring配置中定義
           19    private SimpleMailMessage simpleMailMessage;//spring配置中定義
           20    private String from;
           21    private String to;
           22    private String subject;
           23    private String content;
           24    private String templateName;
           25    // 是否需要身份驗(yàn)證   
           26    private boolean validate = false
           27    
           28    
           29    public JavaMailSender getMailSender() {
           30        return mailSender;
           31    }

           32    public void setMailSender(JavaMailSender mailSender) {
           33        this.mailSender = mailSender;
           34    }

           35    public VelocityEngine getVelocityEngine() {
           36        return velocityEngine;
           37    }

           38    public void setVelocityEngine(VelocityEngine velocityEngine) {
           39        this.velocityEngine = velocityEngine;
           40    }

           41    /**
           42     * 發(fā)送模板郵件
           43     *
           44     */

           45    public void sendWithTemplate(Map model){
           46        mailSender = this.getMailSender();
           47        simpleMailMessage.setTo(this.getTo()); //接收人  
           48        simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //發(fā)送人,從配置文件中取得
           49        simpleMailMessage.setSubject(this.getSubject());
           50        String result = null;
           51        try {
           52            result = VelocityEngineUtils.mergeTemplateIntoString(this.getVelocityEngine(), this.getTemplateName(), "UTF-8",model);
           53        }
           catch (Exception e) {}
           54        simpleMailMessage.setText(result);
           55        mailSender.send(simpleMailMessage);
           56    }

           57    /**
           58     * 發(fā)送普通文本郵件
           59     *
           60     */

           61    public void sendText(){
           62        mailSender = this.getMailSender();
           63        simpleMailMessage.setTo(this.getTo()); //接收人  
           64        simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //發(fā)送人,從配置文件中取得
           65        simpleMailMessage.setSubject(this.getSubject());
           66        simpleMailMessage.setText(this.getContent());
           67        mailSender.send(simpleMailMessage);
           68    }

           69    /**
           70     * 發(fā)送普通Html郵件
           71     *
           72     */

           73    public void sendHtml(){
           74        mailSender = this.getMailSender();
           75        MimeMessage mimeMessage = mailSender.createMimeMessage();
           76        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
           77        try {
           78            messageHelper.setTo(this.getTo());
           79            messageHelper.setFrom(simpleMailMessage.getFrom());
           80            messageHelper.setSubject(this.getSubject());
           81            messageHelper.setText(this.getContent(),true);      
           82        }
           catch (MessagingException e) {
           83            // TODO Auto-generated catch block
           84            e.printStackTrace();
           85        }

           86        mailSender.send(mimeMessage);
           87    }

           88    /**
           89     * 發(fā)送普通帶一張圖片的Html郵件
           90     *
           91     */

           92    public void sendHtmlWithImage(String imagePath){
           93        mailSender = this.getMailSender();
           94        MimeMessage mimeMessage = mailSender.createMimeMessage();
           95        try {
           96            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
           97            messageHelper.setTo(this.getTo());
           98            messageHelper.setFrom(simpleMailMessage.getFrom());
           99            messageHelper.setSubject(this.getSubject());
          100            messageHelper.setText(this.getContent(),true);
          101//            Content="<html><head></head><body><img src=\"cid:image\"/></body></html>";
          102            //圖片必須這樣子:<img src='cid:image'/>
          103            FileSystemResource img = new FileSystemResource(new File(imagePath));
          104            messageHelper.addInline("image",img);
          105        }
           catch (MessagingException e) {
          106            // TODO Auto-generated catch block
          107            e.printStackTrace();
          108        }

          109        mailSender.send(mimeMessage);
          110    }

          111    /**
          112     * 發(fā)送普通帶附件的Html郵件
          113     *
          114     */

          115    public void sendHtmlWithAttachment(String filePath){
          116        mailSender = this.getMailSender();
          117        MimeMessage mimeMessage = mailSender.createMimeMessage();
          118        try {
          119            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);
          120            messageHelper.setTo(this.getTo());
          121            messageHelper.setFrom(simpleMailMessage.getFrom());
          122            messageHelper.setSubject(this.getSubject());
          123            messageHelper.setText(this.getContent(),true);
          124            FileSystemResource file = new FileSystemResource(new File(filePath));
          125//            System.out.println("file.getFilename==="+file.getFilename());
          126            messageHelper.addAttachment(file.getFilename(),file);
          127        }
           catch (MessagingException e) {
          128            // TODO Auto-generated catch block
          129            e.printStackTrace();
          130        }

          131        mailSender.send(mimeMessage);
          132    }

          133    public String getFrom() {
          134        return from;
          135    }

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

          139    public String getSubject() {
          140        return subject;
          141    }

          142    public void setSubject(String subject) {
          143        this.subject = subject;
          144    }

          145    public String getTo() {
          146        return to;
          147    }

          148    public void setTo(String to) {
          149        this.to = to;
          150    }

          151    public String getTemplateName() {
          152        return templateName;
          153    }

          154    public void setTemplateName(String templateName) {
          155        this.templateName = templateName;
          156    }

          157    public String getContent() {
          158        return content;
          159    }

          160    public void setContent(String content) {
          161        this.content = content;
          162    }

          163    public boolean isValidate() {
          164        return validate;
          165    }

          166    public void setValidate(boolean validate) {
          167        this.validate = validate;
          168    }

          169    public SimpleMailMessage getSimpleMailMessage() {
          170        return simpleMailMessage;
          171    }

          172    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
          173        this.simpleMailMessage = simpleMailMessage;
          174    }

          175}
          上面這個(gè)類實(shí)際上是個(gè)發(fā)送郵件的工具類,我們只要設(shè)置好參數(shù)后調(diào)用想要的sendXXX()就可以了。如下:

           1//注冊完馬上發(fā)送郵件
           2MailSenderService mailSender=this.getMailsenderService();
           3mailSender.setTo(form.getEmail());
           4mailSender.setSubject("來自worthtech的郵件");
           5mailSender.setTemplateName("mail.vm");//設(shè)置的郵件模板
           6Map model=new HashMap();
           7model.put("username", form.getUserName());
           8String url=request.getRequestURL().toString();
           9url=url.substring(0, url.lastIndexOf("/"));
          10model.put("url", url);
          11model.put("email""gjni@worthtech.net");
          12mailSender.sendWithTemplate(model);
          13System.out.println("郵件發(fā)送成功!");

          下面的是spring配置

           1<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
           2       <property name="host" value="${mail.host}"/>
           3       <property name="username" value="${mail.username}"/>
           4       <property name="password" value="${mail.password}"/>
           5        <property name="defaultEncoding" value="UTF-8"></property>
           6        <property name="javaMailProperties">
           7             <props>
           8                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
           9                <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
          10                <!--
          11                <prop key="mail.smtp.starttls.enable">true</prop>
          12                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
          13                <prop key="mail.smtp.socketFactory.fallback">false</prop>
          14                -->
          15            </props>
          16        </property>
          17  </bean>
          18  <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" singleton="false">
          19    <property name="from">
          20        <value>${mail.default.from}</value>
          21    </property>
          22  </bean>
          23  <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
          24        <property name="velocityProperties">   
          25            <props>   
          26                <prop key="resource.loader">class</prop>   
          27                <prop key="class.resource.loader.class">   
          28                    org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader   
          29                </prop>   
          30                <prop key="velocimacro.library"></prop>   
          31            </props>   
          32        </property>   
          33   </bean>
          34    <bean id="mailsenderService" class="com.worthtech.app.util.MailSenderService">  
          35          <property name="mailSender" ref="mailSender" />
          36          <property name="simpleMailMessage" ref="simpleMailMessage" />
          37          <property name="velocityEngine" ref="velocityEngine" />
          38    </bean>

          mail.vm內(nèi)容如下:
           1親愛的${username}
           2
           3歡迎加入worthtech! 
           4
           5當(dāng)您收到這封信的時(shí)候,您已經(jīng)可以正常登錄了。
           6請點(diǎn)擊鏈接登錄首頁:${url}
           7如果您的email程序不支持鏈接點(diǎn)擊,請將上面的地址拷貝至您的瀏覽器(如IE)的地址欄進(jìn)入。
           8
           9如果您還想申請管理員權(quán)限,可以聯(lián)系管理員${email}
          10
          11我們對您產(chǎn)生的不便,深表歉意。
          12
          13希望您在worthtech度過快樂的時(shí)光!
          14    
          15-----------------------
          16     
          17(這是一封自動(dòng)產(chǎn)生的email,請勿回復(fù)。)

          mail.properties如下:
          1mail.host=218.000.000.234
          2mail.port=25
          3mail.username=gjni@worthtech.net
          4mail.password=xxxxxxxx
          5mail.smtp.auth=true
          6mail.smtp.timeout=25000
          7mail.default.from=gjni@worthtech.net

          posted on 2013-08-29 10:19 rogerfan 閱讀(3053) 評論(3)  編輯  收藏 所屬分類: 【Java知識】

          Feedback

          # re: 【轉(zhuǎn)】spring+velocity+javamail發(fā)送模板郵件 2014-07-29 09:13 我都
          地區(qū)穩(wěn)定穩(wěn)定  回復(fù)  更多評論
            

          # re: 【轉(zhuǎn)】spring+velocity+javamail發(fā)送模板郵件 2014-09-13 15:56 鄧宏恒
          SFDSF  回復(fù)  更多評論
            

          # re: 【轉(zhuǎn)】spring+velocity+javamail發(fā)送模板郵件 2014-09-26 10:32 心愿
          寫的挺不錯(cuò)的??!對Spring框架了解的比較少。學(xué)習(xí)中  回復(fù)  更多評論
            

          主站蜘蛛池模板: 全椒县| 颍上县| 治县。| 谷城县| 洛阳市| 东海县| 哈密市| 翁源县| 峨山| 莱阳市| 建瓯市| 江口县| 永靖县| 镇沅| 阳泉市| 淄博市| 玉环县| 富锦市| 灯塔市| 二连浩特市| 合水县| 花莲市| 察哈| 辉县市| 乐平市| 昌吉市| 阳谷县| 奈曼旗| 桐梓县| 沁水县| 沙洋县| 黄龙县| 扎鲁特旗| 大姚县| 怀安县| 梓潼县| 鄂伦春自治旗| 嫩江县| 禹州市| 宁明县| 札达县|