使用JavaMail发送邮件
JavaMail是java提供的一组API,用来发送和接收邮件。
相关协议:
smtp(简单的邮件传输协议),服务器端口为25,用于发送邮件
pop3(邮局协议第3版),服务器端口为110,用于接收邮件
进行发邮件之前,首先需要导包:mail.jar和 activation.jar
使用JavaMail进行发送邮件,共分为三步:
1.获取Session
获取Session对象后,意味着你与服务器已经建立了连接。
/** * 1.得到session */ Properties props = new Properties(); props.setProperty("mail.host", "smtp.163.com"); //设置服务器 props.setProperty("mail.smtp.auth", "true"); //设置需要验证 Authenticator auth = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("用户名", "密码"); //设置用户名和密码 } }; Session session = Session.getInstance(props, auth);
2. 创建MimeMessage对象
它表示一个邮件对象,你可以调用它的各种方法来设置发件人、设置收件人、设置主题以及正文。
/** * 2.创建MimeMessage对象 */ MimeMessage mig = new MimeMessage(session); mig.setFrom(new InternetAddress("username@163.com")); //设置发信人 mig.addRecipients(RecipientType.TO, "receive@163.com");//设置个收信人 mig.setSubject("主题"); //设置主题 mig.setContent("正文内容", "text/html;charset=utf-8");
3.发送邮件
TransPort, 它只有一个功能,发邮件。
/** * 3.发送邮件 */ Transport.send(mig);
上述三步可以发送普通邮件,对于带附件的邮件它就无能为力了。如果想发送带附件的邮件,需要引入MimeMultipart和MimeBodyPart。
MimeMultipart是一个集合,用来装载多个主体部件。MimeBodyPart是主体部件,我们需要创建两个主体部件,一个是文本内容的,另一个是附件的。
第一步和第三步不需要修改,仅需要修改第二步。
//创建MimeMessage对象 MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("username@163.com")); //设置发件人 msg.addRecipients(RecipientType.TO, "receive@163.com"); //设置收件人 msg.setSubject("主题"); // 设置附件 MimeMultipart list = new MimeMultipart(); //创建多部件 /** * 设置正文 */ MimeBodyPart part1 = new MimeBodyPart(); part1.setContent("正文", "text/html;charset=utf-8"); list.addBodyPart(part1); /** * 设置附件 */ MimeBodyPart part2 = new MimeBodyPart(); part2.attachFile(new File("文件路径")); //添加附件 part2.setFileName(MimeUtility.encodeText("附件名称") ); //设置附件名称 list.addBodyPart(part2); //添加到邮件中 msg.setContent(list);
分类:
java相关
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)