栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java(82):Java发邮件(封装邮件内容)工具类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java(82):Java发邮件(封装邮件内容)工具类

1、Mavan引用
        
        
            javax.mail
            javax.mail-api
            1.6.2
        
        
            com.sun.mail
            javax.mail
            1.6.2
        

2、Email工具类:mailUtil.java

package utils;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import java.io.File;
import java.util.*;


public class MailUtil {
    
    public static MimeMessage simpleMail(Session session,String mailFrom,String mailTo,String mailTittle,String mailContent){
        //创建默认的MimeMessage 对象
        MimeMessage msg = new MimeMessage(session);
        try {
            //邮件发送人
            msg.setFrom(mailFrom);
            //邮件接收人
            msg.setRecipients(Message.RecipientType.TO, mailTo);
            //邮件标题头
            msg.setSubject(mailTittle);
            //邮件发送日期
            msg.setSentDate(new Date());
            //邮件文本内容
            msg.setContent(mailContent, "text/html;charset=UTF-8");
        }catch (Exception mex){
            mex.printStackTrace();
        }
        return msg;
    }

    
    public static MimeMessage attachMail(Session session,Map contentMap, List attachments){
        // 创建邮件对象
        MimeMessage mimeMessage = new MimeMessage(session);
        try {
            //邮件发送人
            mimeMessage.setFrom(contentMap.get("mailFrom").toString());
            //邮件接收人
            mimeMessage.setRecipients(Message.RecipientType.TO, contentMap.get("mailTo").toString());
            //邮件主题
            mimeMessage.setSubject(contentMap.get("mailTittle").toString());
            //创建多重消息
            MimeMultipart multipart = new MimeMultipart();
            //邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(contentMap.get("mailContent").toString(),"text/html;charset=UTF-8");
            multipart.addBodyPart(contentPart);
            //邮件附件
            if(attachments != null) {
                for(File attachment : attachments) {
                    BodyPart attachmentPart = new MimeBodyPart();
                    DataSource source = new FileDataSource(attachment);
                    attachmentPart.setDataHandler(new DataHandler(source));
                    //避免中文乱码的处理
                    attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
                    multipart.addBodyPart(attachmentPart);
                }
            }
            mimeMessage.setContent(multipart,"UTF-8");
            //保存邮件
            mimeMessage.saveChanges();
        }
        catch (Exception mex){
            mex.printStackTrace();
        }
        return mimeMessage;
    }
    
    public static void sendEmail(Map contentMap){
        sendEmail(contentMap,null);
    }
        
    public static void sendEmail(Map contentMap, List attaches){
        try {
            //获取系统属性
            Properties pros = new Properties();
            pros.setProperty("mail.transport.protocol", "smtp");// 使用的协议
            pros.setProperty("mail.smtp.host", contentMap.get("host").toString());// 发件人的邮箱的SMTP服务器地址
            pros.setProperty("mail.smtp.auth", "true");// 需要请求认证
            //设置邮件服务器
            Session session = Session.getInstance(pros);
            if (attaches==null) {
                //发送简单的文本邮件
                MimeMessage msg = simpleMail(session, contentMap.get("mailFrom").toString(), contentMap.get("mailTo").toString(), contentMap.get("mailTittle").toString(), contentMap.get("mailContent").toString());
                Transport.send(msg, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
                System.out.println("Sent simpleMail successfully...");
            } else {
                //发送带附件邮件
                MimeMessage mimeMessage=attachMail(session,contentMap,attaches);
                Transport.send(mimeMessage, contentMap.get("mailFrom").toString(), contentMap.get("passwd").toString());
                System.out.println("Sent attaches Email successfully...");
            }

        }catch (Exception mex){
            mex.printStackTrace();
        }
    }
}

3、执行和邮件示例

3.1、调用

public class Test{
  public static void main(String[] args) {
        //发送方信息配置
        Map map = new HashMap<>();
        map.put("host","smtp.exmail.qq.com");
        map.put("mailFrom","hmf@xxx.com");
        map.put("passwd","xxx");
        map.put("mailTo","xxx@qq.com");
        //标题和内容配置
        map.put("mailTittle","这是邮件的主题");
        map.put("mailContent","这是邮件的内容");
        //发送简单邮件
        sendEmail(map);
        //附件配置
        List attaches = new ArrayList<>();
        File attach1 = new File("./data.csv");
        File attach2 = new File("./11.log");
        attaches.add(attach1);
        attaches.add(attach2);
        //发送带附件邮件
        sendEmail(map,attaches);
    }
}

简单邮件示例:

 带附件邮件示例:

参考:https://blog.csdn.net/z2012c/article/details/84696287

https://www.cnblogs.com/g177w/p/12504153.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号