zoukankan      html  css  js  c++  java
  • 使用spring的邮件发送功能

    使用spring提供的MailSender和JavaMailSender类。

    1、邮件对象类

    package cn.luxh.app.mail;
    
    import java.util.List;
    
    import org.springframework.core.io.AbstractResource;
    
    public class Email {
        //发件人
        private String from;
        //收件人
        private String[] to;
        //主题
        private String subject;
        //邮件内容
        private String text;
        //附件
        private List<AbstractResource> resources;
        
        //geter seter
            //...
        
    }
        

    2、邮件发送服务类

    package cn.luxh.app.mail;
    
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage;
    
    import org.springframework.core.io.AbstractResource;
    import org.springframework.mail.MailSender;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public class MailService {
        
        //简单的文本邮件发送类
        private MailSender mailSender;
        //复杂邮件发送类
        private JavaMailSender javaMailSender;
        
        /**
         * 发送简单的文本邮件
         * @param email
         */
        public void send(Email email){
            SimpleMailMessage smm = new SimpleMailMessage();
            smm.setFrom(email.getFrom());
            smm.setSubject(email.getSubject());
            smm.setTo(email.getTo());
            smm.setText(email.getText());
            mailSender.send(smm);
            
        }
        
        /**
         * 发送复杂邮件
         * @param email
         * @throws MessagingException
         */
        public void sendMime(Email email) throws MessagingException{
            MimeMessage mm = javaMailSender.createMimeMessage();
            //加上编码,解决中文乱码
            MimeMessageHelper helper = new MimeMessageHelper(mm,true,"GB2312");
            
            helper.setFrom(email.getFrom());
            helper.setTo(email.getTo());
            helper.setSubject(email.getSubject());
            helper.setText(email.getText(),true);
            
            //添加附件
            if(email.getResources()!=null && email.getResources().size()>0) {
                for(AbstractResource resource:email.getResources()) {
                    helper.addAttachment(resource.getFilename(), resource);
                }
            }
            
            javaMailSender.send(mm);
            
        }
        
        public MailSender getMailSender() {
            return mailSender;
        }
    
        public void setMailSender(MailSender mailSender) {
            this.mailSender = mailSender;
        }
        
        public JavaMailSender getJavaMailSender() {
            return javaMailSender;
        }
    
        public void setJavaMailSender(JavaMailSender javaMailSender) {
            this.javaMailSender = javaMailSender;
        }
    }

    3、邮件属性配置文件mail.properties

    #smtp服务器
    mail.host=smtp.163.com
    
    #用户名
    mail.username=heymenfolk@163.com
    
    #密码
    mail.password=your password

    4、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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="
                        http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                        http://www.springframework.org/schema/context      
                        http://www.springframework.org/schema/context/spring-context-3.2.xsd">
        <!-- 启用注解支持 -->
        <context:annotation-config />
        
        <!-- 加载属性文件 -->
        <context:property-placeholder location="classpath:mail.properties" />
        
        <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="${mail.host}"/>
            <property name="username" value="${mail.username}"/>
            <property name="password" value="${mail.password}"/>
        </bean>
        
        <bean id="mailService" class="cn.luxh.app.mail.MailService">
            <property name="mailSender" ref="javaMailSender"/>
            <property name="javaMailSender" ref="javaMailSender"/>
        </bean>    
    </beans>

    5、测试

    package cn.luxh.app.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.mail.MessagingException;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.core.io.AbstractResource;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.core.io.FileSystemResource;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import cn.luxh.app.mail.Email;
    import cn.luxh.app.mail.MailService;
    
    @RunWith(SpringJUnit4ClassRunner.class)  
    @ContextConfiguration(locations={"classpath:app-mail.xml"})
    public class MailTester {
        
        @Autowired
        private MailService mailService;
        @Test
        public void testSendMail() {
            Email email = new Email();
            email.setFrom("heymenfolk@163.com");
            email.setTo(new String[]{"21760658@qq.com"});
            email.setSubject("简单文本邮件");
            email.setText("how are you.i am from china!
    你好,程序猿!!");
            mailService.send(email);
        }
        
        @Test
        public void testSendMimeMail() throws MessagingException {
            Email email = new Email();
            email.setFrom("heymenfolk@163.com");
            email.setTo(new String[]{"21760658@qq.com","heymenfolk@outlook.com"});
            email.setSubject("复杂邮件");
            String text = "<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><h1><a href='http://luxh.cnblogs.com'>我的博客</a></h1></body></html>";
            email.setText(text);
            
            
            List<AbstractResource> resources = new ArrayList<AbstractResource>();
            //添加附件
            ClassPathResource file1 = new ClassPathResource("top1.jpg");
            FileSystemResource file2 = new FileSystemResource("d:/中文.txt");
            resources.add(file1);
            resources.add(file2);
            email.setResources(resources);
            
            mailService.sendMime(email);
        }
    }
  • 相关阅读:
    VC编程锦集-1
    VC窗口关闭调用顺序
    Windows消息WM_USER、WM_APP的区别
    Toolbar添加控件;创建多行toolbar;重新排列toolbar
    SQL模糊查询详解
    MySql格式化日期
    Apache PHP 服务环境配置
    kvm.install
    repo搭建
    apache故障处理
  • 原文地址:https://www.cnblogs.com/luxh/p/3193354.html
Copyright © 2011-2022 走看看