用 Java 发送 HTML 内容并带附件的电子邮件

打印 上一主题 下一主题

主题 1012|帖子 1012|积分 3036

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
实现思路


  • 首先,设置邮件服务器的相关属性,包罗是否必要认证、使用的邮件协议、服务器地址、端口等。
  • 创建一个会话对象,使用 Session.getInstance 方法,并提供邮件服务器的属性和认证信息。
  • 创建一个 MimeMessage 对象作为邮件消息,设置发件人、收件人、邮件主题等信息。
  • 为了发送 HTML 内容,使用 setContent 方法并指定内容范例为 text/html。
  • 对于附件,创建一个 MimeMultipart 对象,将 HTML 内容作为一个 MimeBodyPart 到场,同时将附件也作为一个 MimeBodyPart 到场,使用 attachFile 方法添加附件。
  • 末了,使用 Transport.send 方法发送邮件。

以下是完整的 Java 代码示例:
  1. import javax.mail.*;
  2. import javax.mail.internet.*;
  3. import java.io.File;
  4. import java.util.Properties;
  5. public class HtmlAndAttachmentEmailSender {
  6.     public static void main(String[] args) {
  7.         // 邮件服务器的属性设置
  8.         Properties properties = new Properties();
  9.         properties.put("mail.smtp.auth", "true");
  10.         properties.put("mail.smtp.starttls.enable", "true");
  11.         properties.put("mail.smtp.host", "smtp.example.com");
  12.         properties.put("mail.smtp.port", "587");
  13.         // 发件人的邮箱账号和密码
  14.         String senderEmail = "your_email@example.com";
  15.         String senderPassword = "your_password";
  16.         // 创建会话对象
  17.         Session session = Session.getInstance(properties, new Authenticator() {
  18.             @Override
  19.             protected PasswordAuthentication getPasswordAuthentication() {
  20.                 return new PasswordAuthentication(senderEmail, senderPassword);
  21.             }
  22.         });
  23.         try {
  24.             // 创建邮件消息对象
  25.             MimeMessage message = new MimeMessage(session);
  26.             message.setFrom(new InternetAddress(senderEmail));
  27.             message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com"));
  28.             message.setSubject("HTML 内容并带附件的邮件");
  29.             // 创建一个多部分的邮件内容对象
  30.             Multipart multipart = new MimeMultipart();
  31.             // 第一部分:HTML 内容
  32.             BodyPart htmlPart = new MimeBodyPart();
  33.             String htmlContent = "<html><body><h1>嘿,这是一封带有附件的 HTML 邮件哦!</h1><p>是不是很赞呢?</p></body></html>";
  34.             htmlPart.setContent(htmlContent, "text/html; charset=utf-8");
  35.             multipart.addBodyPart(htmlPart);
  36.             // 第二部分:附件
  37.             BodyPart attachmentPart = new MimeBodyPart();
  38.             File file = new File("path/to/your/attachment.pdf"); // 这里替换为你要添加的附件的实际路径
  39.             attachmentPart.attachFile(file);
  40.             multipart.addBodyPart(attachmentPart);
  41.             // 将多部分内容设置到邮件消息中
  42.             message.setContent(multipart);
  43.             // 发送邮件
  44.             Transport.send(message);
  45.             System.out.println("HTML 内容并带附件的邮件发送成功!");
  46.         } catch (MessagingException | java.io.IOException e) {
  47.             e.printStackTrace();
  48.             System.out.println("邮件发送失败!");
  49.         }
  50.     }
  51. }
复制代码
代码表明



怎么样,小伙伴们,是不是很简朴呢 赶紧把这段代码用到你的项目中,让你的邮件更加丰富和强盛吧 不外,在使用过程中,记得处置处罚好异常环境,防止出现不测哦 有啥题目随时来问我,我会帮你解决的!


  • 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 内容并带附件的邮件发送成功!"。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表