实现思路
-
首先,设置邮件服务器的相关属性,包括是否需要认证、使用的邮件协议、服务器地址、端口等。
-
创建一个会话对象,使用
Session.getInstance方法,并提供邮件服务器的属性和认证信息。 -
创建一个
MimeMessage对象作为邮件消息,设置发件人、收件人、邮件主题等信息。 -
为了发送 HTML 内容,使用
setContent方法并指定内容类型为text/html。 -
对于附件,创建一个
MimeMultipart对象,将 HTML 内容作为一个MimeBodyPart加入,同时将附件也作为一个MimeBodyPart加入,使用attachFile方法添加附件。 -
最后,使用
Transport.send方法发送邮件。
以下是完整的 Java 代码示例:
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.util.Properties;public class HtmlAndAttachmentEmailSender {public static void main(String[] args) {// 邮件服务器的属性设置Properties properties = new Properties();properties.put("mail.smtp.auth", "true");properties.put("mail.smtp.starttls.enable", "true");properties.put("mail.smtp.host", "smtp.example.com");properties.put("mail.smtp.port", "587");// 发件人的邮箱账号和密码String senderEmail = "your_email@example.com";String senderPassword = "your_password";// 创建会话对象Session session = Session.getInstance(properties, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(senderEmail, senderPassword);}});try {// 创建邮件消息对象MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(senderEmail));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com"));message.setSubject("HTML 内容并带附件的邮件");// 创建一个多部分的邮件内容对象Multipart multipart = new MimeMultipart();// 第一部分:HTML 内容BodyPart htmlPart = new MimeBodyPart();String htmlContent = "<html><body><h1>嘿,这是一封带有附件的 HTML 邮件哦!</h1><p>是不是很赞呢?</p></body></html>";htmlPart.setContent(htmlContent, "text/html; charset=utf-8");multipart.addBodyPart(htmlPart);// 第二部分:附件BodyPart attachmentPart = new MimeBodyPart();File file = new File("path/to/your/attachment.pdf"); // 这里替换为你要添加的附件的实际路径attachmentPart.attachFile(file);multipart.addBodyPart(attachmentPart);// 将多部分内容设置到邮件消息中message.setContent(multipart);// 发送邮件Transport.send(message);System.out.println("HTML 内容并带附件的邮件发送成功!");} catch (MessagingException | java.io.IOException e) {e.printStackTrace();System.out.println("邮件发送失败!");}}
}
代码解释
怎么样,小伙伴们,是不是很简单呢 赶紧把这段代码用到你的项目中,让你的邮件更加丰富和强大吧 不过,在使用过程中,记得处理好异常情况,防止出现意外哦 有啥问题随时来问我,我会帮你解决的!
-
Properties类:用于存储邮件服务器的属性,如mail.smtp.auth表示是否需要身份验证,mail.smtp.starttls.enable表示是否启用 TLS 安全连接,mail.smtp.host是邮件服务器的主机名,mail.smtp.port是端口号。 -
Session类:代表邮件会话,使用Session.getInstance方法根据properties和Authenticator生成,Authenticator提供发件人的认证信息。 -
MimeMessage类:代表邮件消息,使用session创建,通过setFrom设置发件人,setRecipients设置收件人,setSubject设置主题。 -
Multipart类:代表邮件的多部分内容,这里使用MimeMultipart实现。 -
MimeBodyPart类:代表邮件的一部分内容,可以是 HTML 文本或附件。对于 HTML 部分,使用setContent方法将 HTML 内容添加进去,并指定内容类型为text/html;对于附件部分,使用attachFile方法添加附件。 -
Transport.send方法:最终发送邮件。 -
使用说明
-
确保你将代码中的
your_email@example.com替换为发件人的真实邮箱地址,your_password替换为发件人的邮箱密码。 -
将
recipient_email@example.com替换为收件人的真实邮箱地址。 -
将
path/to/your/attachment.pdf替换为你要添加的附件的实际路径。 -
运行代码时,如果遇到异常,会打印异常信息,同时输出 "邮件发送失败!";如果发送成功,会输出 "HTML 内容并带附件的邮件发送成功!"。