zoukankan      html  css  js  c++  java
  • 使用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="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="smtp.163.com"></property>
            <property name="port" value="25"></property>
            <property name="username" value="邮箱账户"></property>
            <property name="password" value="邮箱密码"></property>
            <property name="defaultEncoding" value="UTF-8"></property>
            <property name="protocol" value="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  类。里面涉及了多个附件的发送,是用模板发送。注意导入命名空间的架包。

  • 相关阅读:
    css 写一个三角形
    vue 知识汇总,中级阶段的。
    获取url参数封装的
    vue 知识点
    不换行css
    微信小程序的横向滚动
    git提交本地分支到远程分支
    linux shell head tail 用法简介
    PHP服务重启
    MongoDB用户创建
  • 原文地址:https://www.cnblogs.com/kzhan/p/3818014.html
Copyright © 2011-2022 走看看