Java如何实现发送邮件并携带附件
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍Java如何实现发送邮件并携带附件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 邮件服务器与传输协议要在网络上实现邮件功能,必须要有专门的邮件服务器。主要
千家信息网最后更新 2025年11月06日Java如何实现发送邮件并携带附件
这篇文章主要介绍Java如何实现发送邮件并携带附件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、 邮件服务器与传输协议
要在网络上实现邮件功能,必须要有专门的邮件服务器。主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。
SMTP服务器地址:一般是 smtp.xxx.com,163邮箱是smtp.163.com,qq邮箱是smtp.qq.com。
SMTP协议
通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。
POP3协议
通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。
二、 在发送人邮箱中开启POP3/SMTP服务
qq邮箱
登录qq邮箱后 → 设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 → POP3/SMTP服务点击开启(需要绑定手机号发送验证短信)→ 获得了一串授权码(后续发送邮件需要)
163邮箱
登录163邮箱 → 设置 → POP3/SMTP/IMAP → POP3/SMTP服务 点击开启(需要邮箱app认证) → 获取到一串授权码
三、 导入依赖
javax.mail 1.5.0-b01
四、 编写工具类
import lombok.extern.slf4j.Slf4j;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.*;import java.util.Date;import java.util.Properties; @Slf4jpublic class EmailUtils { public static final String SenderEmail = "xxxxx@qq.com";//发送人邮箱 public static final String senderCode = "ixxxxxxxxxxxdcd";//发送人邮箱授权码 public static final String emailSMTPHost = "smtp.qq.com";//服务器地址 public static final String receiveMailAccount = "xxxxx@qq.com";//收件人邮箱 public static final String ccMailAccount = "xxxxx@163.com";//抄送人邮箱 public static final String bccmailAccount = "xxxxxx@qq.com";//密送人邮箱 /*发送邮件*/ public static void sendMail() { try { Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp");// 使用的协议 props.setProperty("mail.smtp.host", emailSMTPHost);// 发件人的邮箱的SMTP服务器地址 props.setProperty("mail.smtp.auth", "true");// 需要请求认证 Session session = Session.getInstance(props);//得到会话对象实例 session.setDebug(false);//是否打印详细日志 MimeMessage message = createMimeMessage(session);//获取邮件对象(封装了一个方法) Transport transport = session.getTransport(); transport.connect(SenderEmail, senderCode);//连接发送人的邮箱账户 // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); // 7. 关闭连接 transport.close(); log.info("邮件发送成功"); } catch (Exception e) { log.error("发送邮件失败"); } } public static MimeMessage createMimeMessage(Session session) throws Exception { // 1. 创建一封邮件 MimeMessage message = new MimeMessage(session); // 2. From: 发件人 message.setFrom(new InternetAddress(SenderEmail, "发件人", "UTF-8")); // 3. 设置收件人、抄送人、密送人 //MimeMessage.RecipientType.TO:收件类型;MimeMessage.RecipientType.CC:抄送类型;MimeMessage.RecipientType.BCC:密送类型 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "收件人", "UTF-8")); message.setRecipient(MimeMessage.RecipientType.CC, new InternetAddress(ccMailAccount, "抄送人", "UTF-8")); message.setRecipient(MimeMessage.RecipientType.BCC, new InternetAddress(bccmailAccount, "密送人", "UTF-8")); // 4. Subject: 邮件主题 message.setSubject("这是邮件的主题", "UTF-8"); // 5. Content: 邮件正文(可以使用html标签) message.setContent("这是邮件正文", "text/html;charset=UTF-8"); *****************以下部分为携带附件代码,不需要携带附件的可删除星号圈起的部分************************* MimeMultipart multipart = new MimeMultipart(); MimeBodyPart file1 = new MimeBodyPart(); DataHandler handler = new DataHandler(new FileDataSource("文件路径")); file1.setDataHandler(handler); //对文件名进行编码,防止出现乱码 String fileName = MimeUtility.encodeWord("文件名", "utf-8", "B"); file1.setFileName(fileName); multipart.addBodyPart(file1); message.setContent(multipart);******************************************************************************************* // 6. 设置发件时间 message.setSentDate(new Date()); // 7. 保存设置 message.saveChanges(); return message; }}以上是"Java如何实现发送邮件并携带附件"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
邮件
邮箱
服务
服务器
UTF-8
附件
地址
收件人
发件人
对象
文件
用户
类型
主题
内容
文件名
正文
篇文章
账户
这是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我的世界10m的服务器
服务器安全狗 等级保护
武汉搞软件开发的工作好找吗
网络技术中进制转换
速达3000 数据库
网络技术挑战赛 思科
文交所软件开发公司
网络安全工作如何具体落实
黑客用的数据库app
境外收入占比数据库
脑图 软件开发
学校网络安全隐患排查报道
软件开发网上接单
网络安全法考试施行的时间是
我的世界跑酷天堂服务器怎么用
服务器图片如何迁移
支付宝(中国)网络技术公司
陕西服务器虚拟化哪家好
上百万的服务器
温州智慧社区软件开发
服务器什么配置好
网络安全重于泰山口号
慧趣网络技术有限公司
网络技术与法律课堂
错误信息远程服务器返回了
虾皮台湾本土店铺收款服务器
管理中心服务器的是什么子系统
湖南奇迈互联网科技有限责任公司
四川c语言软件开发哪家可靠
温州智慧社区软件开发