首页 > 代码库 > 使用Spring整合javaMail发用邮件

使用Spring整合javaMail发用邮件

1.导入javamail.jar        自行百度下载

2.使用模板发送邮件架包 freemarker.jar

3.Spring配置文件  以及架包这里就不需要说了吧,如果不明白的发我Email :xkjava@sina.com

 

 

//邮件信息设置类 main.java

package cn.jbit.email;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeUtility;import org.springframework.core.io.ClassPathResource;import org.springframework.mail.MailSender;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;public class Mail {    private JavaMailSender mailSender;    private Configuration configuration;    public Configuration getConfiguration() {        return configuration;    }    public void setConfiguration(Configuration configuration) {        this.configuration = configuration;    }    public JavaMailSender getMailSender() {        return mailSender;    }    public void setMailSender(JavaMailSender mailSender) {        this.mailSender = mailSender;    }    //模板設置    private String getMailText() {        String htmtext = "";        // 发信内容        String mailcontent = "你好,欢迎使用尊云服务器,在这里,你的数据更加安全、性能更加稳定!";        try {            // 获取实例模板            Template template = configuration.getTemplate("Template02.ftl");            // 通过map传递动态数据            Map map = new HashMap();            map.put("name", "简单");            map.put("content", mailcontent);            htmtext = FreeMarkerTemplateUtils.processTemplateIntoString(                    template, map);        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (TemplateException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return htmtext;    }    //发送邮件    public void send() throws MessagingException {        MimeMessage message = mailSender.createMimeMessage();        MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8");        try {            helper.setFrom("xkjava@163.com");            helper.setTo("xkjava@sina.com");            helper.setSubject("歡迎來到員工社區");            helper.setText(getMailText(),true);            
        //多个附件发送,先放进集合,注意这里的文件路径 List
<String> strFilePath = new ArrayList<String>();
                //文件路径 strFilePath.add(
"cn/jbit/template/1.doc"); strFilePath.add("cn/jbit/template/he_header.png"); for (String strfile : strFilePath) { //带附件发送邮件 ClassPathResource file = new ClassPathResource(strfile); helper.addAttachment(file.getFilename(), file.getFile()); } //发送 mailSender.send(message); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); /* simpleMailMessage.setFrom("kzhan8082@163.com"); simpleMailMessage.setTo("xkjava@sina.com"); simpleMailMessage.setText("HelloJavaMail!!!!"); simpleMailMessage.setSubject("Hello");*/ //mailSender.send(simpleMailMessage); // 发送邮件 }}

 

 

 

//Spring  applicationContext.xml 配置文件

<?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-2.5.xsd">

  <!--通过模板发送邮件-->
    <bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
        <!-- 模板路徑 -->    <!--模板路径,这里根据自己的模板路径来,模板的后缀名为 .ftl-->
        <property name="templateLoaderPath" value="http://www.mamicode.com/cn/jbit/template"></property>
        
        <!-- 设置FreeMarke环境变量 -->
        <property name="freemarkerSettings">
            <props>
                  <!--这里暂时不配,防止中文乱码-->
            </props>
        </property>
    </bean>



    <!-- 设置邮件信息 这里就是用163的邮箱做demo,方便-->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="http://www.mamicode.com/smtp.163.com"></property>
        <property name="port" value="http://www.mamicode.com/25"></property>
        <property name="username" value="http://www.mamicode.com/邮箱账户"></property>
        <property name="password" value="http://www.mamicode.com/邮箱密码"></property>
        <property name="defaultEncoding" value="http://www.mamicode.com/UTF-8"></property>
        <property name="protocol" value="http://www.mamicode.com/smtp"></property>
        <property name="javaMailProperties">
            <props>
                <!-- 设置smtp服务器需要用户验证 -->
                <prop key="mail.smtp.auth">true</prop>
            </props>
        
        </property>
    </bean>
    
    <!-- IOC注入 -->
    <bean id="mailsend" class="cn.jbit.email.Mail">
        <property name="mailSender" ref="mailSender"></property>
        <property name="configuration" ref="freeMarkerConfiguration"></property>
    </bean>

    
</beans>

 

 

//测试类MailTest.java

package cn.jbit.email;import javax.mail.MessagingException;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MialTest {    /**     * @param args     * @throws MessagingException      */    public static void main(String[] args) throws MessagingException {        // TODO Auto-generated method stub        /*Mail mail = new Mail();        mail.send();*/            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");                Mail mail02 = (Mail)applicationContext.getBean("mailsend");        mail02.send();        System.out.println("success");    }}

 

 

 

这里的功能比较多,注意看设置邮件信息的 mail.java  类。里面涉及了多个附件的发送,是用模板发送。注意导入命名空间的架包。