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

 更新时间:2025年01月24日 09:41:07   作者:五行星辰  
这篇文章主要为大家详细介绍了如何使用Java实现发送HTML内容并带附件的电子邮件,文中的示例代码讲解详细,有需要的小伙伴可以参考一下

实现思路

首先,设置邮件服务器的相关属性,包括是否需要认证、使用的邮件协议、服务器地址、端口等。

创建一个会话对象,使用 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() {
            @Override
            protected 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 内容并带附件的邮件发送成功!"。

到此这篇关于Java实现发送HTML内容并带附件的电子邮件的文章就介绍到这了,更多相关Java发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot日志配置操作全面介绍

    SpringBoot日志配置操作全面介绍

    日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但是,这丝毫不影响它在任何一个系统中的重要的地位,这篇文章主要介绍了SpringBoot日志配置
    2022-10-10
  • SpringBoot中快速实现邮箱发送代码解析

    SpringBoot中快速实现邮箱发送代码解析

    这篇文章主要介绍了SpringBoot中快速实现邮箱发送代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 使用Java实现2048小游戏代码实例

    使用Java实现2048小游戏代码实例

    这篇文章主要介绍了使用Java实现2048小游戏代码实例,2048 游戏是一款益智类游戏,玩家需要通过合并相同数字的方块,不断合成更大的数字,最终达到2048,游戏规则简单,但挑战性很高,需要玩家灵活运用策略和计算能力,本文将使用Java代码实现,需要的朋友可以参考下
    2023-10-10
  • Spring整合多数据源实现动态切换的实例讲解

    Spring整合多数据源实现动态切换的实例讲解

    下面小编就为大家带来一篇Spring整合多数据源实现动态切换的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java接收前端请求体的多种方式总结

    Java接收前端请求体的多种方式总结

    这篇文章主要给大家介绍了关于Java接收前端请求体的多种方式,文中通过代码介绍的非常详细,对大家学习或者Java具有一定的参考学习价值,需要的朋友可以参考下
    2023-08-08
  • SpringBoot文件分片上传教程

    SpringBoot文件分片上传教程

    这篇文章主要介绍了SpringBoot文件分片上传教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java中Steam流的用法详解

    Java中Steam流的用法详解

    Stream是Java 8 API添加的一个新的抽象,称为流Stream,本文主要介绍了Java中Steam流的用法详解,具有一定的参考价值,感兴趣的可以了解一下
    2023-04-04
  • SSH框架网上商城项目第7战之整合Struts2和Json

    SSH框架网上商城项目第7战之整合Struts2和Json

    SSH框架网上商城项目第7战之整合Struts2和Json,打通EasyUI和Struts2之间的交互,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • logback的addtivity属性定义源码解读

    logback的addtivity属性定义源码解读

    这篇文章主要为大家介绍了logback的addtivity属性定义源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • java 中ThreadLocal本地线程和同步机制的比较

    java 中ThreadLocal本地线程和同步机制的比较

    这篇文章主要介绍了java 中ThreadLocal本地线程和同步机制的比较的相关资料,需要的朋友可以参考下
    2017-03-03

最新评论