JavaMail实现发送超文本(html)格式邮件的方法

JavaMail是一个用于处理电子邮件的Java API,可发送和接收邮件。要发送HTML格式的邮件,可以按照以下步骤进行:

步骤1: 导入包

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

步骤2: 设置连接属性

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");

步骤3: 获取会话对象

Session session = Session.getInstance(props, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("your_email@gmail.com", "your_password");
    }
});

步骤4: 创建邮件消息

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("your_email@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@gmail.com"));
message.setSubject("HTML格式邮件示例");

String htmlMessage = "<h1>这是一封HTML格式的邮件</h1><p>hello world!</p>";
message.setContent(htmlMessage, "text/html");

步骤5: 发送邮件

Transport.send(message);
System.out.println("邮件已发送");

示例1: 发送带图片的HTML邮件

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("your_email@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@gmail.com"));
message.setSubject("带图片的邮件");

String htmlMessage = "<h1>这是一封带图片的HTML邮件</h1>"
                   + "<p>hello <img src='https://example.com/image.jpg'> world!</p>";
message.setContent(htmlMessage, "text/html");

// 添加图片
MimeBodyPart imageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource("/path/to/image.jpg");
imageBodyPart.setDataHandler(new DataHandler(fds));
imageBodyPart.setHeader("Content-ID","<image>");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(imageBodyPart);
multipart.addBodyPart(new MimeBodyPart().setContent(htmlMessage, "text/html"));
message.setContent(multipart);

示例2: 发送带附件的HTML邮件

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("your_email@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@gmail.com"));
message.setSubject("带附件的邮件");

String htmlMessage = "<h1>这是一封带附件的HTML邮件</h1>"
                   + "<p>hello world!</p>";
message.setContent(htmlMessage, "text/html");

// 添加附件
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource("/path/to/file.pdf");
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName("file.pdf");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(attachmentBodyPart);
multipart.addBodyPart(new MimeBodyPart().setContent(htmlMessage, "text/html"));
message.setContent(multipart);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaMail实现发送超文本(html)格式邮件的方法 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Spring Boot集成Thymeleaf模板引擎的完整步骤

    下面是Spring Boot集成Thymeleaf模板引擎的完整步骤,包含两个示例说明。 1. 添加依赖 在pom.xml文件中添加如下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta…

    Java 2023年6月15日
    00
  • 35道SpringBoot面试题及答案(小结)

    下面是对于 “35道SpringBoot面试题及答案(小结)” 的详细讲解: 概述 该篇文章主要包含了35道关于Spring Boot的面试题及详细的答案解析,可以帮助读者更好地了解Spring Boot的使用和原理。同时也适用于准备面试的读者,可以通过该篇文章来检验自身的学习掌握情况以及提高面试通过率。 答案解析 文章主要分为以下几个部分: Spring …

    Java 2023年5月15日
    00
  • Java之maven打完jar包之后将jar包放到指定位置汇总

    下面是“Java之maven打完jar包之后将jar包放到指定位置汇总”的完整攻略: 一、使用Maven打jar包 在项目的pom.xml文件中添加以下配置: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId>…

    Java 2023年5月19日
    00
  • Struts2实现生成动态验证码并验证实例代码

    实现生成动态验证码并验证,我们可以通过Struts2框架结合java的验证码生成工具包Jcaptcha实现。下面是具体的步骤和示例代码: 步骤1:添加Jcaptcha依赖 我们首先需要添加Jcaptcha的依赖,可以在pom.xml中加入以下代码: <dependency> <groupId>com.github.stephenc.j…

    Java 2023年5月20日
    00
  • Android开发中的文件操作工具类FileUtil完整实例

    下面我会详细讲解“Android开发中的文件操作工具类FileUtil完整实例”的攻略,包含以下几个方面的内容: 简介 文件读取 文件写入 文件复制 文件删除 示例说明 结论 1. 简介 在Android开发中,文件操作时常遇到,因此可以写一个工具类封装常用的文件操作,方便进行文件操作。 2. 文件读取 使用FileInputStream对象打开文件,然后使…

    Java 2023年6月15日
    00
  • springBoot整合CXF并实现用户名密码校验的方法

    下面是“Spring Boot整合CXF并实现用户名密码校验的方法”的完整攻略: 1. 添加依赖 在 pom.xml 文件中添加 CXF 相关的依赖: <dependencies> <!– CXF 依赖 –> <dependency> <groupId>org.apache.cxf</groupId&…

    Java 2023年5月20日
    00
  • python em算法的实现

    Python EM算法的实现 EM算法(Expectation-Maximization algorithm)是一种迭代求解极大似然估计或极大后验概率估计的算法,常用于含有隐变量的概率模型参数的最大似然估计或极大后验概率估计。它是一种迭代算法,每次迭代分两步:期望步骤和最大化步骤。期望步骤求期望得到后验概率分布,最大化步骤求能最大化期望似然函数的模型参数,然…

    Java 2023年5月19日
    00
  • 一篇文章告诉你如何在Java数组中插入一个字符

    下面是详细的攻略: 1. 准备工作 在 Java 中,数组是一个固定大小的对象容器,其中每个元素都必须是相同的数据类型。在插入一个字符到数组中,我们需要先确定以下几点: 数组是否足够容量存放新元素 新元素的数据类型是否与数组中元素的数据类型相同 2. 创建新数组并复制元素 由于 Java 数组的大小是固定不变的,我们无法插入一个元素到原有的数组。因此我们需要…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部