使用velocity+spring发送邮件

来源:互联网 发布:手机通话录音软件 编辑:程序博客网 时间:2024/05/04 01:22

applicationContext.xml:

<bean name="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations">  
            <list>  
                <value>classpath:mail.properties</value>
            </list>  
        </property>  
    </bean>


<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>  
                <!--  
                <prop key="mail.smtp.starttls.enable">true</prop>  
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>  
                <prop key="mail.smtp.socketFactory.fallback">false</prop>  
                -->  
            </props>  
        </property>  
  </bean>  
  
  <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" scope="prototype" >  
    <property name="from">  
        <value>${mail.default.from}</value>
    </property>  
  </bean>  
  
  <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">  
        <property name="velocityProperties">     
            <props>     
                <prop key="resource.loader">class</prop>     
                <prop key="class.resource.loader.class">     
                    org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader     
                </prop>     
                <prop key="velocimacro.library"></prop>     
            </props>     
        </property>     
   </bean>  
   
    <bean id="mailsenderService" class="com.gewb.service.MailSenderService">
          <property name="mailSender" ref="mailSender" />
          <property name="simpleMailMessage" ref="simpleMailMessage" />  
          <property name="velocityEngine" ref="velocityEngine" />  
    </bean>  




mail.properties:

mail.host=smtp.mail.aliyun.com
mail.port=25  
mail.username=raymond@aliyun.com
mail.password=*****
mail.smtp.auth=true  
mail.smtp.timeout=25000
mail.default.from=raymond@aliyun.com



MailTest.java:

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");
MailSenderService mailSender = (MailSenderService) context.getBean("mailsenderService");

// MailSenderService mailSender=this.getMailsenderService();
mailSender.setTo("raymond@aliyun.com");
mailSender.setSubject("来自gewb的测试邮件");  //邮件主题
mailSender.setTemplateName("mail.vm");//引用模板名
Map model=new HashMap();  
// model.put("username", form.getUserName());  
model.put("username", "raymond@aliyun.com");
// String url=request.getRequestURL().toString();  
// url=url.substring(0, url.lastIndexOf("/"));  
// model.put("url", url);  
model.put("email", "raymond_ge2004@aliyun.com");  
mailSender.sendWithTemplate(model);  
System.out.println("邮件发送成功!");  


}



mail.vm

亲爱的${username}  
  
欢迎加入!   
  
当您收到这封信的时候,您已经可以正常登录了。  
请点击链接登录首页:${url}  
如果您的email程序不支持链接点击,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入。  
  
如果您还想申请管理员权限,可以联系管理员${email}  
  
我们对您产生的不便,深表歉意。  
  
希望您在这里度过快乐的时光!  
      
-----------------------  
       
(这是一封自动产生的email,请勿回复。) 


还有一个关键类

MailSenderService.java

private JavaMailSender mailSender;//spring配置中定义  
    private VelocityEngine velocityEngine;//spring配置中定义  
    private SimpleMailMessage simpleMailMessage;//spring配置中定义  
    private String from;  
    private String to;  
    private String subject;  
    private String content;  
    private String templateName;  
    // 是否需要身份验证     
    private boolean validate = false;   
      
      
    public JavaMailSender getMailSender() {  
        return mailSender;  
    }  
    public void setMailSender(JavaMailSender mailSender) {  
        this.mailSender = mailSender;  
    }  
    public VelocityEngine getVelocityEngine() {  
        return velocityEngine;  
    }  
    public void setVelocityEngine(VelocityEngine velocityEngine) {  
        this.velocityEngine = velocityEngine;  
    }  
    /** 
     * 发送模板邮件 
     * 
     */  
    public void sendWithTemplate(Map model){  
        mailSender = this.getMailSender();  
        simpleMailMessage.setTo(this.getTo()); //接收人    
        simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //发送人,从配置文件中取得  
        simpleMailMessage.setSubject(this.getSubject());  
        String result = null;  
        try {  
            result = VelocityEngineUtils.mergeTemplateIntoString(this.getVelocityEngine(), this.getTemplateName(), "UTF-8",model);  
        } catch (Exception e) {}  
        simpleMailMessage.setText(result);  
        mailSender.send(simpleMailMessage);  
    }  
    /** 
     * 发送普通文本邮件 
     * 
     */  
    public void sendText(){  
        mailSender = this.getMailSender();  
        simpleMailMessage.setTo(this.getTo()); //接收人    
        simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //发送人,从配置文件中取得  
        simpleMailMessage.setSubject(this.getSubject());  
        simpleMailMessage.setText(this.getContent());  
        mailSender.send(simpleMailMessage);  
    }  
    /** 
     * 发送普通Html邮件 
     * 
     */  
    public void sendHtml(){  
        mailSender = this.getMailSender();  
        MimeMessage mimeMessage = mailSender.createMimeMessage();  
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);  
        try {  
            messageHelper.setTo(this.getTo());  
            messageHelper.setFrom(simpleMailMessage.getFrom());  
            messageHelper.setSubject(this.getSubject());  
            messageHelper.setText(this.getContent(),true);        
        } catch (MessagingException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        mailSender.send(mimeMessage);  
    }  
    /** 
     * 发送普通带一张图片的Html邮件 
     * 
     */  
    public void sendHtmlWithImage(String imagePath){  
        mailSender = this.getMailSender();  
        MimeMessage mimeMessage = mailSender.createMimeMessage();  
        try {  
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);  
            messageHelper.setTo(this.getTo());  
            messageHelper.setFrom(simpleMailMessage.getFrom());  
            messageHelper.setSubject(this.getSubject());  
            messageHelper.setText(this.getContent(),true);  
//          Content="<html><head></head><body><img src=\"cid:image\"/></body></html>";  
            //图片必须这样子:<img src='cid:image'/>  
            FileSystemResource img = new FileSystemResource(new File(imagePath));  
            messageHelper.addInline("image",img);  
        } catch (MessagingException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        mailSender.send(mimeMessage);  
    }  
    /** 
     * 发送普通带附件的Html邮件 
     * 
     */  
    public void sendHtmlWithAttachment(String filePath){  
        mailSender = this.getMailSender();  
        MimeMessage mimeMessage = mailSender.createMimeMessage();  
        try {  
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true);  
            messageHelper.setTo(this.getTo());  
            messageHelper.setFrom(simpleMailMessage.getFrom());  
            messageHelper.setSubject(this.getSubject());  
            messageHelper.setText(this.getContent(),true);  
            FileSystemResource file = new FileSystemResource(new File(filePath));  
//          System.out.println("file.getFilename==="+file.getFilename());  
            messageHelper.addAttachment(file.getFilename(),file);  
        } catch (MessagingException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        mailSender.send(mimeMessage);  
    }  
    public String getFrom() {  
        return from;  
    }  
    public void setFrom(String from) {  
        this.from = from;  
    }  
    public String getSubject() {  
        return subject;  
    }  
    public void setSubject(String subject) {  
        this.subject = subject;  
    }  
    public String getTo() {  
        return to;  
    }  
    public void setTo(String to) {  
        this.to = to;  
    }  
    public String getTemplateName() {  
        return templateName;  
    }  
    public void setTemplateName(String templateName) {  
        this.templateName = templateName;  
    }  
    public String getContent() {  
        return content;  
    }  
    public void setContent(String content) {  
        this.content = content;  
    }  
    public boolean isValidate() {  
        return validate;  
    }  
    public void setValidate(boolean validate) {  
        this.validate = validate;  
    }  
    public SimpleMailMessage getSimpleMailMessage() {  
        return simpleMailMessage;  
    }  
    public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {  
        this.simpleMailMessage = simpleMailMessage;  
    }  

0 0
原创粉丝点击