概述
JavaMail 是一个用于发送和接收电子邮件的 Java
API。它提供了一个平台无关和协议无关的框架,允许开发人员通过标准电子邮件协议(如
SMTP、POP3 和 IMAP)来创建、发送和读取电子邮件。以下是 JavaMail
的一些关键概念和功能介绍:
基本概念
Session : JavaMail 的 Session
对象表示邮件会话。它存储了配置信息,如邮件服务器地址和认证信息。
Store : Store
对象用于与邮件服务器通信,特别是接收邮件时。它支持协议如 IMAP 和
POP3。
Transport : Transport
对象用于发送邮件。它支持协议如 SMTP。
Message : Message
对象代表一封电子邮件。JavaMail 提供了 MimeMessage
类,用于创建和解析 MIME 类型的电子邮件。
Folder :Folder
对象代表邮件文件夹,如收件箱、发件箱、草稿等。通过 Folder
对象可以操作邮件。
实现
步骤
发送电子邮件的基本步骤包括
1、创建一个 Session
对象。
2、使用 MimeMessage
创建电子邮件内容。
3、使用 Transport
对象发送邮件。
具体
引入依赖
1 2 3 4 <dependency > <groupId > org.springframework.boot</groupId > <artifactId > spring-boot-starter-mail</artifactId > </dependency >
获取qq邮箱授权码
账号-> 安全设置 -> 生成授权码, 得到一串字符串编码
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 public static void main (String[] args) { Properties props = new Properties (); props.put("mail.smtp.host" , "smtp.qq.com" ); props.put("mail.smtp.ssl.protocols" , "TLSv1.2" ); props.put("mail.smtp.port" , "587" ); props.put("mail.smtp.auth" , "true" ); props.put("mail.smtp.starttls.enable" , "true" ); final String username = "xxxxx@qq.com" ; final String password = "xxxxxx" ; Session session = Session.getInstance(props, new Authenticator () { protected PasswordAuthentication getPasswordAuthentication () { return new PasswordAuthentication (username, password); } }); try { Message message = new MimeMessage (session); message.setFrom(new InternetAddress (username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("xxxx@qq.com" )); message.setSubject("Test Email from QQ" ); String htmlContent = "<h1>Hello,</h1>" + "<p>This is a test email sent from <b>QQ Mail</b> using <i>JavaMail</i>!</p>" + "<p><a href='https://www.example.com'>Visit Example</a></p>" ; message.setContent(htmlContent, "text/html; charset=utf-8" ); Transport.send(message); System.out.println("Email sent successfully!" ); } catch (MessagingException e) { e.printStackTrace(); } } }
测试