《pro Spring》学习笔记之使用Velocity+Spring+James邮件服务器发送邮件

原创 2007年09月20日 11:37:00

所谓集成Velocity发送邮件,最关键的部分就把原来写在配置文件的邮件体用vm模板改写,用hashmap的方式填充vm模板,构造成邮件体

 

package ch15.VelocityMail;


import java.util.Map;

import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.velocity.app.VelocityEngine;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.ui.velocity.VelocityEngineUtils;


public class MessagePreparator implements MimeMessagePreparator ...{
    
private String to;
    
private String from;
    
private String htmlContent;
    
private String textContent;
    
private String subject;
    
private VelocityEngine velocityEngine;
    
private Map data;
 
    
public String getHtmlContent() ...{
        
return htmlContent;
    }

    
public void setHtmlContent(String htmlContent) ...{
        
this.htmlContent = htmlContent;
    }

    
public String getTextContent() ...{
        
return textContent;
    }

    
public void setTextContent(String textContent) ...{
        
this.textContent = textContent;
    }

    
public Map getData() ...{
        
return data;
    }

    
public void setData(Map data) ...{
        
this.data = data;
    }

    
public VelocityEngine getVelocityEngine() ...{
        
return velocityEngine;
    }

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

    
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 getFrom() ...{
        
return from;
    }

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


    
public void prepare(MimeMessage msg) throws Exception ...{
        
//设置邮件信息
        msg.addFrom(InternetAddress.parse(from));
        msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        msg.setSubject(subject);
        
        
//创建multipart/alternative的包装器
        MimeMultipart mimeMultipart=new MimeMultipart();
        msg.setContent(mimeMultipart);
        
        
//创建text的邮件体
        BodyPart plainText=new MimeBodyPart();
        plainText.setText(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, textContent, data));
        mimeMultipart.addBodyPart(plainText);
        
        
//创建html的邮件体
        BodyPart htmlText=new MimeBodyPart();
        htmlText.setContent(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, htmlContent, data),
"text/html");
        mimeMultipart.addBodyPart(htmlText);
        
    }

     
}

 

package ch15.VelocityMail;

import java.util.HashMap;
import java.util.Map;

import org.springframework.mail.javamail.JavaMailSenderImpl;

public class MessageSender ...{
       
        
protected JavaMailSenderImpl sender;
        
public void sendMessage(MessagePreparator msg)...{
            Map data
=new HashMap();
            data.put(
"htmlmsg""hello world html");//htmlmsg为vm文件中的变量
            data.put("textmsg""hello world text");//textmsg为vm文件中的变量
            msg.setData(data);
            sender.send(msg);
        }

        
public JavaMailSenderImpl getSender() ...{
            
return sender;
        }

        
public void setSender(JavaMailSenderImpl sender) ...{
            
this.sender = sender;
        }

       
}

 

 

<?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-2.0.xsd">
<bean id="messageSender" class="ch15.VelocityMail.MessageSender">
  
<property name="sender">
    
<ref bean="sender"/>
  
</property>
</bean>

<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  
<property name="host">
    
<value>king.cn</value>
  
</property> 
  
<property name="username">
    
<value>gaoxiang</value>
  
</property>
  
<property name="password">
    
<value>gaoxiang</value>
  
</property>
  
<property name="javaMailProperties">
        
<props>
           
<prop key="mail.smtp.auth">true</prop>
           
<prop key="mail.smtp.timeout">10000</prop>
        
</props>
  
</property>
</bean>

<bean id="messagePreparator" class="ch15.VelocityMail.MessagePreparator">
  
<property name="to">
    
<value>yulihua2020@126.com</value>
  
</property>
  
<property name="from">
    
<value>gaoxiang@king.cn</value>
  
</property>
  
<property name="subject">
    
<value>html/text mime mail</value>
  
</property>
  
<property name="htmlContent">
    
<value>./src/ch15/VelocityMail/html.vm</value>
  
</property>
  
<property name="textContent">
    
<value>./src/ch15/VelocityMail/text.vm</value>
  
</property>
  
<property name="velocityEngine">
    
<bean class="org.springframework.ui.velocity.VelocityEngineFactoryBean"/>
  
</property>
</bean>

</beans>

 

html.VM

this is html message: $htmlmsg

 

text.vm

 

this is text message: $textmsg

 

测试代码:

 

package ch15.VelocityMail;

import java.io.File;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class VelocityMailTest ...{


    
public static void main(String[] args) throws Exception ...{
        ApplicationContext context 
= new ClassPathXmlApplicationContext(
                
"ch15/VelocityMail/applicationContext.xml");
        MessagePreparator messagePreparator 
= (MessagePreparator) context.getBean("messagePreparator");
        MessageSender messageSender
=(MessageSender)context.getBean("messageSender");
        
for (int i = 0; i < 10; i++...{
            messageSender.sendMessage(messagePreparator);
            System.out.println(
"成功");
            Thread.sleep(
2000); //发送后延时2秒钟
        }

    }

}

Java使用spring发送邮件

Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender,和值对象SimpleMailMessage,它封装了简单邮件的属性...
  • qq_23217629
  • qq_23217629
  • 2017年04月17日 10:00
  • 984

Spring Boot实战之发送邮件

Spring Boot实战之发送邮件 一、邮件服务简介 邮件服务在互联网早期就已经出现,如今已成为人们互联网生活中必不可少的一项服务。那么邮件服务是怎么工作的呢?如下给出邮件发送与接收的典型过程: 1...
  • sun_t89
  • sun_t89
  • 2016年08月10日 11:22
  • 7156

spring使用FreeMarker模板发送邮件及附件笔记

需要引用的jar包: //Java Mail发送邮件所需jar包 mail-1.4.1.jar activation-1.1.jar //spring包 spring-context-suppor...
  • H12KJGJ
  • H12KJGJ
  • 2017年07月09日 12:24
  • 331

通过Spring Mail Api发送邮件

转自:http://blog.csdn.net/smcwwh/article/details/7095027 【Spring Mail API】 Spring Mail API都在org.sp...
  • is_zhoufeng
  • is_zhoufeng
  • 2013年09月25日 10:41
  • 31578

使用spring框架中的组件发送邮件的详细说明

原创作者:http://blog.csdn.net/caimengyuan/article/details/51224269 在进行项目开发的时候,要做一个通过发送邮件验证码的功能来找回密码。spr...
  • qq_28663043
  • qq_28663043
  • 2017年04月13日 09:32
  • 2246

搭建邮件服务器之SMTP发送服务器(六)

创建postmaster帐户或别名 RFC 5321规定每个域必须具有邮政管理员邮箱并接受电子邮件。在接收来自您的电子邮件之前,存在检查此邮件的邮件系统。因此,请确保您在邮件服务器上创建一个po...
  • u011628250
  • u011628250
  • 2017年06月16日 08:53
  • 446

使用spring实现邮件的发送(含测试,源码,注释)

此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看:    先写个接口 /** * @Title: IMailserdServi...
  • qq_34137397
  • qq_34137397
  • 2017年05月30日 23:49
  • 922

使用spring的JavaMailSender发送邮件

JavaMailSender在spring-context-support.jar中 代码结构如下:1、pom.xml中加入以下依赖: org.springframework ...
  • Guerlei
  • Guerlei
  • 2016年11月16日 18:10
  • 7423

Java远程调用邮件服务器,实现邮件发送

写这篇文章的背景是公司Android客户端需要实现一个功能,实现类似于密码找回或者用户注册完发送一个邮件给用户的功能,当然这些逻辑客户端只负责请求自己的服务端,自己的服务端再去请求邮件服务器。 邮件...
  • sunchaoenter
  • sunchaoenter
  • 2013年07月09日 14:10
  • 8156

spring boot 发送邮件

简单几步,实现在spring boot中发送邮件。
  • ClementAD
  • ClementAD
  • 2016年07月05日 17:49
  • 10729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《pro Spring》学习笔记之使用Velocity+Spring+James邮件服务器发送邮件
举报原因:
原因补充:

(最多只允许输入30个字)