Spring+Email 发送邮件

Spring提供的发送电子邮件的高级抽象层,向用户屏蔽了底层邮件系统的一些细节,同时代表客户端负责底层资源的处理。

MailSender和SimpleMailMessage的基本用法。

这里是mailSender的注入,MailSender是发送邮件的主要接口,Spring为它提供的一个子接口,即:org.springframework.mail.javamail.JavaMailSender,在他的实现类中有用来发送邮件的一些配置。

SimpleMailMessage是值对象,封装了一些简单的属性,如from、to、subject、text等等,SimpleMailMessage只能用来发送text格式的邮件。

如果发送Html格式的邮件,请使用MimeMessageHelper类。

MailSender, JavaMailSender, MimeMessagePreparator, MimeMessageHelper, MimeMailMessage, Serialized Form

这几个都行:MimeMessagePreparator,MimeMessageHelper,MimeMailMessage

使用到的依赖包:

       <dependency>    
        <groupId>org.springframework.integration</groupId>     
        <artifactId>spring-integration-mail</artifactId>     
        <version>2.1.3.RELEASE</version> 
       </dependency> 
       <dependency>   
         <groupId>javax.mail</groupId>     
         <artifactId>mail</artifactId>     
         <version>1.4.5</version> 
       </dependency> 


applicationContext中的配置:

	<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="mail.tongyiku.com"></property>
		<property name="username" value="customer@tongyiku.com"></property>
		<property name="password" value="×××××××××"></property>
		<property name="javaMailProperties">
			<props>
				<prop key="mail.smtp.auth">true</prop>
			</props>
		</property>
	</bean>
	<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
		<property name="from" value="customer@tongyiku.com"></property>
		<property name="subject" value="your subject!"></property>
	</bean>
	<bean id="orderManager" class="com.spring.mail.OrderManagerImpl">
		<property name="mailSender" ref="mailSender"></property>
		<property name="message" ref="mailMessage"></property>
	</bean>

JTO文件:

Customer:

public class Customer {
	private String emailAddress;
	private String firstName;
	private String lastName;

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getEmailAddress() {
		return emailAddress;
	}

	public void setEmailAddress(String emailAddress) {
		this.emailAddress = emailAddress;
	}
	
	
}


Order:

public class Order {
	private String orderNumber;
	public String getOrderNumber() {
		return orderNumber;
	}

	public void setOrderNumber(String orderNumber) {
		this.orderNumber = orderNumber;
	}

	private Customer customer;

	public Customer getCustomer() {
		return customer;
	}

	public void setCustomer(Customer customer) {
		this.customer = customer;
	}
	
}


OrderManage类:

public interface OrderManager {
	void placeOrder(Order order);
}

 

第一种实现:

OrderManageImpl.java

public class OrderManagerImpl implements OrderManager {

	private MailSender mailSender;
    private SimpleMailMessage message;

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void setMessage(SimpleMailMessage message) {
        this.message = message;
    }

    public void placeOrder(final Order order) {
    	
    	SimpleMailMessage msg = new SimpleMailMessage(this.message);
    	msg.setSubject("主题");//主题
        msg.setTo(order.getCustomer().getEmailAddress());
        msg.setText(
            "Dear "
                + order.getCustomer().getFirstName()
                + order.getCustomer().getLastName()
                + ", thank you for placing order. Your order number is "
                + order.getOrderNumber());
        try{
            mailSender.send(msg);
        }
        catch(MailException ex) {
            //log it and go on
            System.err.println(ex.getMessage());            
        }
    }
}


第二种实现:

OrderManagerImpl.java:

public class OrderManagerImpl implements OrderManager {

	private JavaMailSender mailSender;
    private SimpleMailMessage message;

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

    public void setMessage(SimpleMailMessage message) {
        this.message = message;
    }

    public void placeOrder(final Order order) {
        
    	 MimeMessagePreparator preparator = new MimeMessagePreparator() {
             public void prepare(MimeMessage mimeMessage) throws MessagingException {
                 mimeMessage.setRecipient(Message.RecipientType.TO, 
                         new InternetAddress(order.getCustomer().getEmailAddress()));
                 mimeMessage.setFrom(new InternetAddress("customer@tongyiku.com"));
                 mimeMessage.setText(
                     "Dear "
                         + order.getCustomer().getFirstName()
                         + order.getCustomer().getLastName()
                         + ", thank you for placing order. Your order number is second:"
                         + order.getOrderNumber());
             }
         };

    	
         try{
        	 mailSender.send(preparator);
         }
        catch(MailException ex) {
            //log it and go on
            System.err.println(ex.getMessage());            
        }
    }
}


测试用例:

@ContextConfiguration(locations={"/applicationContext.xml"})
public class OrderManageEmailTest extends AbstractTransactionalJUnit4SpringContextTests{
	@Autowired
	private OrderManager orderManager;
	Order order = null;
	@Before
	public void before(){
		order=new Order();
		order.setOrderNumber("123654");
		Customer customer = new Customer();
		customer.setEmailAddress("meixiang@tongyiku.com");
		customer.setFirstName("li");
		customer.setLastName("meixiang");
		order.setCustomer(customer);
	}
	
	@Test
	public void placeOrderTest(){
		orderManager.placeOrder(order);
	}
}

发送HTML模板文件:

使用MimeMessageHelper类。

    	MimeMessage msg = mailSender.createMimeMessage();
    	MimeMessageHelper helper = null;
    	try {
			helper = new MimeMessageHelper(msg, true, getEncoding());
			helper.setTo(new InternetAddress(order.getCustomer().getEmailAddress()));
			helper.setSubject("subject");
			helper.setFrom(getFrom());
			helper.setText("a", "<font color=red weight=bold>童壹库邮件模板</font>");
		} catch (MessagingException ex) {
			System.out.println(ex.getMessage());
		} 
    	
        try{
        	mailSender.send(msg);
        }
        catch(MailException ex) {
            System.err.println(ex.getMessage());            
        }


 参考:

http://oss.org.cn/ossdocs/framework/spring/zh-cn/mail.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值