Java如何实现发送邮件并携带附件
发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,这篇文章主要介绍Java如何实现发送邮件并携带附件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 邮件服务器与传输协议要在网络上实现邮件功能,必须要有专门的邮件服务器。主要
千家信息网最后更新 2025年02月13日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安全错误
数据库的锁怎样保障安全
私募痛数据库
建筑材料数据库架构
服务器开命令方块
二维码服务器软件
假设你是一名软件开发经理
油田网络安全警示语
搭建csgo服务器带宽需要多大
浙江高质量网络安全
万达金融网络安全吗
王者荣耀注销服务器流程
面试软件开发优缺点的优缺点
魔兽世界三区都有哪些服务器
盐池农产品网站服务器
阿里云服务器挂磁盘
电脑最初网络安全密钥
数据库系统 精品课程
网络安全防护类书籍
性价比高的软件开发考研院校
华为服务器 修改管理口
数据库代数操作
病案数据库的开发
网络安全动漫视频
数据库中修改字段名的语法规则
文件存储到数据库的优缺点
徐汇区互联网络技术服务合同
九天玄数网络技术班课堂分享
kodi 清理数据库
复试科目数据库
软件开发应遵循什么原则
服务器 远程 软件