java端发送邮件

第一步:maven中引入POI

<!-- 邮箱发送验证-start -->

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

<!-- 邮箱发送验证-end -->

<!-- json添加-start -->

<dependency>    
            <groupId>net.sf.json-lib</groupId>    
            <artifactId>json-lib</artifactId>    
            <version>2.4</version>    
            <classifier>jdk15</classifier>    
        </dependency>

<!-- json添加-end-->

package com.cnc.etrust.service.util;

import java.io.File;
import java.util.HashMap;
import java.util.Properties;

import javax.mail.internet.MimeMessage;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import com.cnc.etrust.domain.Dictionaries;
import com.cnc.etrust.repository.DictionariesRepository;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * 发送邮箱工具类
 * 
 * @author djm
 * @version v1.0.0
 * @since 2018-07-18
 */
@Service
public class MailUtil {
    // log信息
    private final Logger log = LoggerFactory.getLogger(MailUtil.class);
    @Autowired
    private DictionariesRepository dic;
    /**
     * 发送简单邮件
     * 方式:一对一
     * 
     * @author djm
     */
    public HashMap<String,Object> sendSimpleContent(String receiveEmail, String title, String content) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱信息
            SimpleMailMessage message = new SimpleMailMessage();
            // 发信箱
            message.setFrom(sender.getUsername());
            // 收信箱
            message.setTo(receiveEmail);
            // 邮箱头部信息
            message.setSubject(title);
            // 邮箱内容
            message.setText(content);
            // 发送邮件
            sender.send(message);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        } catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }
    
    /**
     * 发送简单邮件
     * 方式:一对多
     * 
     * @author djm
     */
    public HashMap<String,Object> sendSimpleContent(JSONArray receiveEmail, String title, String content) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱信息
            SimpleMailMessage message = new SimpleMailMessage();
            // 发信箱
            message.setFrom(sender.getUsername());
            // 设置地址
            String[] arr = new String[receiveEmail.size()];
            // 获取迭代器
            for(Integer i=0;i<receiveEmail.size();i++){
                arr[i] = receiveEmail.getJSONObject(i).getString("email");
            }
            // 收信箱
            message.setTo(arr);
            // 邮箱头部信息
            message.setSubject(title);
            // 邮箱内容
            message.setText(content);
            // 发送邮件
            sender.send(message);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        } catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }

    /**
     * 发送html邮件(不带图片)
     * 方式:一对一
     * 
     * @author djm
     */
    public HashMap<String,Object> sendHtmlContent(String receiveEmail, String title, String content) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱消息
            MimeMessage mailMessage = sender.createMimeMessage();
            // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用。
            MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
            // 发信箱
            messageHelper.setFrom(sender.getUsername());
            // 收信箱
            // 第一个参数:接收者类型-TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人
            // 第二个参数:收信箱地址
            messageHelper.setTo(receiveEmail);
            // 邮箱头部信息
            messageHelper.setSubject(title);
            // 邮箱内容
            messageHelper.setText(content,true);
            // 发送邮件
            sender.send(mailMessage);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        }catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }
    
    /**
     * 发送html邮件(不带图片)
     * 方式:一对多
     * 
     * @author djm
     */
    public HashMap<String,Object> sendHtmlContent(JSONArray receiveEmail, String title, String content) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱消息
            MimeMessage mailMessage = sender.createMimeMessage();
            // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用。
            MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
            // 发信箱
            messageHelper.setFrom(sender.getUsername());
            // 设置地址
            String[] arr = new String[receiveEmail.size()];
            // 获取迭代器
            for(Integer i=0;i<receiveEmail.size();i++){
                arr[i] = receiveEmail.getJSONObject(i).getString("email");
            }
            // 收信箱
            // 第一个参数:接收者类型-TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人
            // 第二个参数:收信箱地址
            messageHelper.setTo(arr);
            // 邮箱头部信息
            messageHelper.setSubject(title);
            // 邮箱内容
            messageHelper.setText(content,true);
            // 发送邮件
            sender.send(mailMessage);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        }catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }
    
    /**
     * 发送html邮件(带图片)
     * 方式:一对一
     * 
     * @author djm
     */
    public HashMap<String,Object> sendHtmlContent(String receiveEmail, String title, String content, JSONObject img) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱消息
            MimeMessage mailMessage = sender.createMimeMessage();
            // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用。
            MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);
            // 发信箱
            messageHelper.setFrom(sender.getUsername());
            // 收信箱
            // 第一个参数:接收者类型-TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人
            // 第二个参数:收信箱地址
            messageHelper.setTo(receiveEmail);
            // 邮箱头部信息
            messageHelper.setSubject(title);
            // 邮箱内容
            messageHelper.setText(content,true);
            // 图片
            FileSystemResource imgSource = new FileSystemResource(new File(img.getString("imgSource")));
            messageHelper.addInline(img.getString("imgName"), imgSource);
            // 发送邮件
            sender.send(mailMessage);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        }catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }
    
    /**
     * 发送html邮件(不带图片)
     * 方式:一对多
     * 
     * @author djm
     */
    public HashMap<String,Object> sendHtmlContent(JSONArray receiveEmail, String title, String content, JSONObject img) {
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 获取发送邮件对象
        JavaMailSenderImpl sender = setSenderConfig();
        try {
            // 建立邮箱消息
            MimeMessage mailMessage = sender.createMimeMessage();
            // 注意这里的boolean,等于真的时候才能嵌套图片,在构建MimeMessageHelper时候,所给定的值是true表示启用。
            MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
            // 发信箱
            messageHelper.setFrom(sender.getUsername());
            // 设置地址
            String[] arr = new String[receiveEmail.size()];
            // 获取迭代器
            for(Integer i=0;i<receiveEmail.size();i++){
                arr[i] = receiveEmail.getJSONObject(i).getString("email");
            }
            // 收信箱
            // 第一个参数:接收者类型-TO表示主要接收人,CC表示抄送人,BCC表示秘密抄送人
            // 第二个参数:收信箱地址
            messageHelper.setTo(arr);
            // 邮箱头部信息
            messageHelper.setSubject(title);
            // 邮箱内容
            messageHelper.setText(content,true);
            // 图片
            FileSystemResource imgSource = new FileSystemResource(new File(img.getString("imgSource")));
            messageHelper.addInline(img.getString("imgName"), imgSource);
            // 发送邮件
            sender.send(mailMessage);
            // 设置结果
            result.put("status", "success");
            result.put("message", "发送成功");
        }catch (Exception e) {
            // TODO: handle exception
            log.info(e.getMessage());
            // 设置结果
            result.put("status", "error");
            result.put("message", e.getMessage());
        }
        return result;
    }

    /**
     * 设置初始配置
     * 
     * @author djm
     */
    public JavaMailSenderImpl setSenderConfig() {
        
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        // 设置服务器
        Dictionaries emailHostInfo = dic.findOne(new Long(129));
        if(emailHostInfo != null){
            sender.setHost(emailHostInfo.getContent());
        }else{
            sender.setHost("邮箱域名");
        }
        // 设置发送端口
        sender.setPort(25);
        // 用户名
        Dictionaries emailUserInfo = dic.findOne(new Long(130));
        if(emailUserInfo != null){
            sender.setUsername(emailUserInfo.getContent());
        }else{
            sender.setUsername("你的邮箱用户名");
        }
        // 密码
        Dictionaries emailPassInfo = dic.findOne(new Long(131));
        if(emailPassInfo != null){
            sender.setPassword(emailPassInfo.getContent());
        }else{
            sender.setPassword("你的密码或权限码");
        }
        // 参数设置
        Properties prop = new Properties();
        // 认证用户名和密码是否正确
        prop.put("mail.smtp.auth", "true");
        // 设置多长时间后自动停止
        prop.put("mail.smtp.timeout", "25000");
        // 进行加密
        prop.put("mail.starttls.enable", "true");
        prop.put("mail.starttls.required", "true");
        // 设置参数
        sender.setJavaMailProperties(prop);
        // 设置编码格式
        sender.setDefaultEncoding("UTF-8");
        // 返回对象
        return sender;
    }
    
    /**
     * 发送邮件
     * 
     * @param info-参数:receiveEmail 收信箱、title 邮件标题、content 邮件内容、type 邮件类别
     * @return
     * @author djm
     */
    public HashMap<String,Object> send(JSONObject info){
        // 返回对象
        HashMap<String,Object> result = new HashMap<String,Object>();
        // 类别
        String type = info.getString("type");
        if(info.getString("receiveEmail").isEmpty()){
            result.put("status", "");
            result.put("message", "收信箱不能为空!");
        }else{
            // 简单发送-一对一
            if("1".equals(type)){
                result = this.sendSimpleContent(info.getString("receiveEmail"), info.getString("title"), info.getString("content"));
            // 简单发送-一对多
            }else if("2".equals(type)){
                
                result = this.sendSimpleContent(info.getJSONArray("receiveEmail"), info.getString("title"), info.getString("content"));
            // 不带图片的html发送-一对一
            }else if("3".equals(type)){
                result = this.sendHtmlContent(info.getString("receiveEmail"), info.getString("title"), info.getString("content"));
            // 不带图片的html发送-一对多
            }else if("4".equals(type)){
                result = this.sendHtmlContent(info.getJSONArray("receiveEmail"), info.getString("title"), info.getString("content"));
            // 带图片的html发送-一对多
            }else if("5".equals(type)){
                result = this.sendHtmlContent(info.getString("receiveEmail"), info.getString("title"), info.getString("content"), info.getJSONObject("img"));
            // 带图片的html发送-一对多
            }else if("6".equals(type)){
                result = this.sendHtmlContent(info.getJSONArray("receiveEmail"), info.getString("title"), info.getString("content"), info.getJSONObject("img"));
            }
        }
        return result;
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值