Java实现邮件发送及带有附件的邮件发送

本文详细介绍使用Java发送普通邮件及带附件邮件的方法,包括配置邮箱服务器、设置邮件内容及附件,适用于企业级应用中自动邮件通知场景。

1.普通邮件的发送功能

这里的这个普通邮件的发送功能是指普通的标题正文的形式的邮箱,比较简单,代码如下:
package com.tdhc.common.util;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;

/**
 * 发送邮件,仅限String类型的正文内容,不支持附件发送
 */
public class SendMail {

    public static void sendMail(String sender,String receiver,String content) {
        MailAccount account = new MailAccount();
        account.setHost("smtp.163.com");//网易邮箱服务器
        account.setPort(25);//默认端口
        account.setAuth(true);
        account.setFrom("xxxxxxxxxx@163.com");//发送邮件的邮箱
        account.setUser(sender);//发送人
        account.setPass("GKZOKNHYTAVUWAG"); //发送邮件的邮箱的授权码,每个账户不一样
        MailUtil.send(account, CollUtil.newArrayList(receiver), "询价单信息", content, false);
    }
}

备注:
Host:邮箱服务器,QQ是stmp.qq.com,网易是stmp.163.com;
port:默认端口
Auth:默认true
from:发送邮件的邮箱
user:发送人
pass:授权码
send方法:
第一个参数:MailAccount对象
第二个参数:接收邮件的邮箱,可以是一个,也可以是多个邮箱的集合
第三个参数:邮件Title-标题
第四个参数:文章内容
第五个参数:默认false即可

2.带有附件的邮件发送功能

这里的功能是发送带有附件的邮件
package com.tdhc.common.util;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * 发送邮件,这里没有做标题正文形式的发送,主要是用作excel.xlsx等形式的附件右键发送
 */
public class SendAttachment {
    public static void sendEmail(String to, ByteArrayOutputStream baos) {
        // 发件人电子邮箱
        String from = "xxxxxxxx@qq.com";
        // 获取系统属性
        Properties properties = System.getProperties();
        // 设置邮件服务器 ->QQ邮箱服务器
        properties.setProperty("mail.smtp.host", "smtp.qq.com");
        properties.put("mail.smtp.auth", "true");
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("xxxxxxxxx@qq.com", "wojdadhskojhadi");
                //发件人邮件用户名、授权码
            }
        });
        try {
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);
            // Set From: 头部头字段
            message.setFrom(new InternetAddress(from));
            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // Set Subject: 头部头字段
            message.setSubject("询价单信息");
            /*添加附件*/
            Multipart multipart = new MimeMultipart();
            if (baos != null) {
                MimeBodyPart fileBody = new MimeBodyPart();
                DataSource source = new ByteArrayDataSource(baos.toByteArray(), "application/msexcel");
                fileBody.setDataHandler(new DataHandler(source));
                // 中文乱码问题,设置附件名称
                fileBody.setFileName(MimeUtility.encodeText("询价单.xlsx"));
                multipart.addBodyPart(fileBody);
            }
            message.setContent(multipart);
            // 发送消息
            Transport.send(message);
        } catch (MessagingException mex) {
            mex.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

备注:
由于在后期测试时不停的发送邮件,所以我的网易邮箱开启了保护,认为我的邮箱中毒了,所以在发送附件功能这里就用的是QQ邮箱,注意区分。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值