javaMail学习(与spring集成)

来源:互联网 发布:淘宝网络营销 编辑:程序博客网 时间:2024/06/06 04:10

1.  邮件发送的过程

 

2. 邮件发送的相关API

 

3. 邮件发送的工具类MailUtil的提取

 

4. SpringjavaMail的支持

Spring邮件抽象层的主要包为org.springframework.mail。它包括了发送电子邮件的主要接口MailSender,和对象SimpleMailMessage,它封装了简单邮件的属性如fromto,ccsubject,text包里还包含一棵以MailException为根的checked Exception继承树,它们提供了对底层邮件系统异常的高级别抽象。 要获得关于邮件异常层次的更丰富的信息。

为了使用JavaMail中的一些特色,比如MIME类型的信件spring提供了MailSender的一个子接口,org.springframework.mail.javamail.JavaMailSenderSpring还提供了一个回调接口org.springframework.mail.javamail.MimeMessagePreparator,用于准备JavaMailMIME信件。

这里简单的介绍了如何使用spring发送各种形式的邮件以及配置。

1、在src目录下建立mail.properties文件里边包含一下内容

mail.host=smtp.qq.com

mail.username=你的邮箱名
mail.password=你的邮箱密码
mail.from=发送方的邮箱

2、使用spring配置

<?xml version="1.0" encoding="UTF-8"?>

<beans

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 

 <!--加载Properties文件-->  

    <bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  

        <property name="locations">  

            <list>  

                <value>classpath:mail.properties</value>  

            </list>  

        </property>  

    </bean>  

    <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">  

        <property name="from">  

            <value>${mail.from}</value>  

        </property>  

        <!--查看SimpleMailMessage源码还可以注入标题,内容等-->  

    </bean>  

    <!--申明JavaMailSenderImpl对象-->  

    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  

        <property name="defaultEncoding" value="UTF-8" />  

        <property name="host" value="${mail.host}" />  

        <property name="username" value="${mail.username}" />  

        <property name="password" value="${mail.password}" />  

        <property name="javaMailProperties">  

            <props>  

                <!--设置认证开关 -->  

                <prop key="mail.smtp.auth">true</prop>  

                <!--启动调试开关 -->  

                <prop key="mail.debug">true</prop>  

                <!--设置发送延时 -->

                <prop key="mail.smtp.timeout">0</prop>

            </props>  

        </property>  

    </bean>  

</beans>

 

 

5. 发送简单邮件

import javax.mail.MessagingException;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.mail.MailSender;

import org.springframework.mail.SimpleMailMessage;

 

/**

 * 本类测试邮件发送Html形式

 *

 * @author Eternity_._

 *

 */

public class SingleMailSend {

 

 

static ApplicationContext actx = new ClassPathXmlApplicationContext(

"applicationContext.xml");

static MailSender sender = (MailSender) actx.getBean("mailSender");

static SimpleMailMessage mailMessage = (SimpleMailMessage) actx.getBean("mailMessage");

public static void main(String args[]) throws MessagingException {

mailMessage.setSubject("你好");

mailMessage.setText("这个是一个通过Spring框架来发送邮件的小程序");

mailMessage.setTo("9197****1@qq.com");

sender.send(mailMessage);

}

}

 

 

6. 发送带有图片的邮件,以嵌入HTML的方式

import java.io.File;

 

import javax.mail.MessagingException;

import javax.mail.internet.MimeMessage;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.core.io.FileSystemResource;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

 

public class SpringAttachedImageMail {

 

public static void main(String[] args) throws MessagingException {

 

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"applicationContext.xml");

JavaMailSenderImpl sender = (JavaMailSenderImpl) ctx

.getBean("mailSender");

MimeMessage mailMessage = sender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);

messageHelper.setFrom("9197****1@qq.com");

messageHelper.setTo("9197****1@qq.com");

 

messageHelper.setSubject("测试邮件中嵌套图片!");

// true 表示启动HTML格式的邮件

messageHelper.setText(

"<html><head></head><body><h1>hello!!spring image html mail</h1>"

+"<a href=http://www.baidu.com>baidu</a>"+ "<img src=cid:image/></body></html>", true);

 

FileSystemResource img = new FileSystemResource(new File(".png"));

 

messageHelper.addInline("image", img);//cid一致

 

sender.send(mailMessage);

System.out.println("邮件发送成功...");

 

}

}

 

 

7. 发送带附件的邮件

import java.io.File;

 

import javax.mail.MessagingException;

import javax.mail.internet.MimeMessage;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.springframework.core.io.FileSystemResource;

import org.springframework.mail.javamail.JavaMailSenderImpl;

import org.springframework.mail.javamail.MimeMessageHelper;

 

public class SpringAttachedImageMail {

 

public static void main(String[] args) throws MessagingException {

 

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"applicationContext.xml");

JavaMailSenderImpl sender = (JavaMailSenderImpl) ctx

.getBean("mailSender");

MimeMessage mailMessage = sender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);

messageHelper.setFrom("9197****1@qq.com");

messageHelper.setTo("9197****1@qq.com");

 

messageHelper.setSubject("测试邮件中嵌套图片!");

// true 表示启动HTML格式的邮件

messageHelper.setText(

"<html><head></head><body><h1>hello!!spring image html mail</h1>"

+"<a href=http://www.baidu.com>baidu</a>"+ "<img src=cid:image/></body></html>", true);

 

FileSystemResource img = new FileSystemResource(new File(".png"));

 

messageHelper.addAttachment(".png", file);//添加到附件

 

sender.send(mailMessage);

System.out.println("邮件发送成功...");

 

}

}

 

 

8. 用户注册时的邮件发送

public void saveOrUpdate(User entity) {

if(UtilFuns.isEmpty(entity.getId())){

//说明是新增

String id = UUID.randomUUID().toString();

entity.setId(id);

entity.getUserInfo().setId(id);//基于一对一的主键关联

//引入Shiro后,进行密码的初始化

entity.setPassword(Encrypt.md5(SysConstant.DEFAULT_PASS, entity.getUserName()));

baseDao.saveOrUpdate(entity);

//发送邮件

mailMessage.setSubject("你好");

mailMessage.setText("尊敬的"+entity.getUserInfo().getName()+",您的用户名:"+entity.getUserName()+",初始密码为:123456");

mailMessage.setTo(entity.getUserInfo().getEmail());

mailSender.send(mailMessage);

}else{

baseDao.saveOrUpdate(entity);

}

 

}

 

注意,在注册邮箱时,为了能发送成功,请进行如下调整。