Java如何实现发送邮件并携带附件
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要介绍Java如何实现发送邮件并携带附件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 邮件服务器与传输协议要在网络上实现邮件功能,必须要有专门的邮件服务器。主要
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
如何防止软件开发人员脱发
数据库un代表什么
网络安全里http什么意思
北京快行网络技术有限公司
卓凡网络技术
acess数据库对象包括什么
网络安全手抄报简五年级
互联网是高科技产物
我的世界ec服务器怎么不卡
文件服务器怎么加到成员服务器
网络技术开发最牛的人
数据库访问量大是怎么处理
vs2010与数据库
关于网络安全的材料
服务器cpu型号大全
互联网科技警务时代
新会网络安全厂家
吴中区品牌网络技术咨询热线
福田区新一代网络技术开发动态
数据库系统工程师考试大纲第四版
测试网站服务器地址
服务器license
产品 商品 数据库设计
国产服务器最好的软件
姜堰区网络技术联系方式
电力系统网络安全公司
ac数据库开发软件
秦皇岛原装服务器价格
软件开发小组团队分工
sql 比较数据库差异