JAVA发送邮件

/**
* 使用Java Mail同步发送邮件,只包含发送功能,不处理Exception等问题
     * @param copyTo 抄送方邮件地址
     * @param subject 主题
     * @param content 正文内容
     * @param attachPaths [0]文件uuid  [1]附件名称
*/
public static void sendSyncEmail(String email, Collection<String> copyTo, String subject,
                              String content, String[] attachPaths) throws MessagingException, UnsupportedEncodingException, GeneralSecurityException, MalformedURLException {
        //阻止程序自动切割超长文件名,文件名经过base64编码后很容易超长,会导致文件名出错
        //参考链接:https://blog.csdn.net/sunroyfcb/article/details/88971647
        System.setProperty("mail.mime.splitlongparameters", "false");
        // 设置邮件服务器参数
        Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", mail_host);//设置邮件服务器 smtp.163.com
        properties.put("mail.smtp.auth", true);
        properties.put("mail.smtp.port", "25");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.socketFactory", sf);
        //某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证
//        properties.put("mail.smtp.ssl.enable", true);
        // 根据设置好的系统properties参数获取默认session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            // qq邮箱服务器账户、第三方登录授权码
            @Override
            public PasswordAuthentication getPasswordAuthentication() {
                // 发件人邮件用户名、密码
                return new PasswordAuthentication(mailFrom, password_mailFrom);
            }
        });
        // 根据session创建默认的 MimeMessage 对象
        MimeMessage message = new MimeMessage(session);
        // set 发件人地址及 *邮箱别名*
        message.setFrom(new InternetAddress(mailFrom, "发件人别名", "UTF-8"));
        // set 收件人信息(可以使用上面的格式为每个收件人或抄送人设置别名)
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
        message.setSubject(subject, "UTF-8");

        BodyPart mimeBodyPart = new MimeBodyPart();
        // set 邮件正文,支持html标签解析(正文内容类型为html)
        mimeBodyPart.setContent(mailText, "text/html; charset=UTF-8");
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(mimeBodyPart);

        // 处理邮件附件:每一个attachPath都是一个文件的绝对路径
        for (String attachPath : attachPaths) {
            mimeBodyPart.setDataHandler(new DataHandler(new MyFileDataSource()));
            // 为附件设置文件名:MimeUtility.encodeText() 方法可防止文件名乱码
            mimeBodyPart.setFileName(MimeUtility.encodeText(attachPath));
            multipart.addBodyPart(mimeBodyPart);
        }
        // 设置抄送:抄送地址必须满足标准email地址格式,否则报错
        for (String copy : copyTo) {
            message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(copy));
        }
        //set 邮件内容并发送
        message.setContent(multipart);
        Transport.send(message);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值