java发送邮件

package com.sdyd.utils;

import org.springframework.stereotype.Component;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.util.Date;
import java.util.Properties;



public class MailUtil {

    private static Transport transport;
    //SMTP服务地址
    private static String mailHost = "smtp.163.com";
    //邮件发送人账号
    private static String sender_username = "xxxx@163.com";
    //邮件发送人授权码
    private static String sender_password = "ASDFAEWRFFDBDSARG";
    //邮件发送格式
    private static String contentPart_Type = "text/html;charset=UTF-8";
    //传输协议
    private static String protocle = "smtp";



    /**
     * 发送邮件
     * @param subject
     * 				邮件主题
     * @param sendHtml
     * 				邮件内容
     * @param toUser
     * 				收件人  多个时参数形式  :  "xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
     * @param ccUser
     * 				抄送人   同上
     * @param bccUser
     * 				密送人   同上
     * @param attachment
     * 				附件
     */
    public static void doSendHtmlEmail(String subject, String sendHtml,
                                String  toUser, String ccUser, String bccUser, File[] attachment){
        try {

            //1、连接邮件服务器的参数配置
            Properties props = new Properties();
            //设置用户的认证方式
            props.setProperty("mail.smtp.auth", "true");
            //设置传输协议
            props.setProperty("mail.transport.protocol", protocle);
            //设置发件人的SMTP服务器地址
            props.setProperty("mail.smtp.host", mailHost);
            //2、创建定义整个应用程序所需的环境信息的 Session 对象
            Session session = Session.getInstance(props);
            //设置调试信息在控制台打印出来
            session.setDebug(true);
            //3、创建邮件的实例对象
            MimeMessage message = new MimeMessage(session);

            // 发件人
            InternetAddress from = new InternetAddress(sender_username);
            message.setFrom(from);

            // 设置多个收件人地址
            if(null != toUser && !toUser.isEmpty()){
                @SuppressWarnings("static-access")
                InternetAddress[] internetAddressTo = new InternetAddress().parse(toUser);
                message.setRecipients(Message.RecipientType.TO, internetAddressTo);
            }

            // 设置多个抄送地址
            if(null != ccUser && !ccUser.isEmpty()){
                @SuppressWarnings("static-access")
                InternetAddress[] internetAddressCC = new InternetAddress().parse(ccUser);
                message.setRecipients(Message.RecipientType.CC, internetAddressCC);
            }

            // 设置多个密送地址
            if(null != bccUser && !bccUser.isEmpty()){
                @SuppressWarnings("static-access")
                InternetAddress[] internetAddressBCC = new InternetAddress().parse(bccUser);
                message.setRecipients(Message.RecipientType.BCC, internetAddressBCC);
            }

            // 发送日期
            message.setSentDate(new Date());

            // 邮件主题
            message.setSubject(subject);

            // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
            Multipart multipart = new MimeMultipart();

            // 添加邮件正文
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent(sendHtml, contentPart_Type);
            multipart.addBodyPart(contentPart);

            BodyPart attachmentBodyPart = null;
            // 添加附件的内容
            if (null != attachment && attachment.length != 0) {
                for (File file : attachment) {
                    attachmentBodyPart = new MimeBodyPart();

                    DataSource source = new FileDataSource(file);
                    attachmentBodyPart.setDataHandler(new DataHandler(source));
                    //MimeUtility.encodeWord可以避免文件名乱码
                    attachmentBodyPart.setFileName(MimeUtility.encodeWord(file.getName()));
                    multipart.addBodyPart(attachmentBodyPart);
                }
            }

            // 将multipart对象放到message中
            message.setContent(multipart);

            // 保存邮件
            message.saveChanges();

            // smtp验证
            transport = session.getTransport("smtp");
            transport.connect(mailHost, sender_username, sender_password);

            // 发送
            transport.sendMessage(message, message.getAllRecipients());
            System.out.println("发送成功!");
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("发送失败");
        } finally {
            if (transport != null) {
                try {
                    transport.close();
                } catch (MessagingException e) {
                    e.printStackTrace();
                    throw new RuntimeException("发送失败");
                }
            }
        }
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-七秒钟记忆

微薄打赏,小编的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值