Java 发送邮件示例

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
云备份 Cloud Backup,100GB 3个月
简介: 本示例展示了如何使用Java编程语言发送电子邮件。通过利用JavaMail API,这段代码实现了从配置SMTP服务器,设置邮件属性,到发送邮件的全过程,为开发者提供了实用的参考。

在Java中发送邮件通常使用JavaMail API,允许开发者轻松地构造和发送邮件。下面是一个使用JavaMail API的简单示例,演示如何发送电子邮件。

1. 添加依赖

如果您使用Maven管理您的项目,请在pom.xml中添加JavaMail API的依赖:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

确保还添加了Java Activation Framework(JAF)的依赖:

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.2.0</version>
</dependency>

如果您不使用Maven,可以从JavaMail GitHub页面下载相关的JAR包并添加到项目的构建路径中。

2. 发送邮件示例代码

以下是一个完整的示例代码,演示如何使用JavaMail发送邮件:

import java.util.Properties;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;

public class SendEmailExample {
   
    public static void main(String[] args) {
   
        // 发件人邮箱地址和密码
        final String fromEmail = "your_email@example.com"; // Sender's email
        final String password = "your_password"; // Sender's password
        // 收件人邮箱地址
        String toEmail = "recipient_email@example.com"; // Receiver's email

        // 1. 设置邮件服务器属性
        Properties properties = new Properties();
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true"); // 使用TLS
        properties.put("mail.smtp.host", "smtp.example.com"); // SMTP服务器地址
        properties.put("mail.smtp.port", "587"); // SMTP端口

        // 2. 创建会话
        Session session = Session.getInstance(properties, new javax.mail.Authenticator() {
   
            protected PasswordAuthentication getPasswordAuthentication() {
   
                return new PasswordAuthentication(fromEmail, password);
            }
        });

        try {
   
            // 3. 创建邮件消息
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress(fromEmail));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
            message.setSubject("测试邮件主题");

            // 4. 创建邮件正文
            MimeBodyPart mimeBodyPart = new MimeBodyPart();
            mimeBodyPart.setContent("这是邮件正文内容", "text/html"); // 可以使用HTML格式

            Multipart multipart = new javax.mail.internet.MimeMultipart();
            multipart.addBodyPart(mimeBodyPart);

            message.setContent(multipart);

            // 5. 发送邮件
            Transport.send(message);
            System.out.println("邮件发送成功");

        } catch (MessagingException e) {
   
            e.printStackTrace();
        }
    }
}

3. 代码说明

  • 邮件服务器属性:设置SMTP服务器的相关参数,如hostportauth等。请根据您使用的邮件服务提供商调整这些参数,例如对于Gmail,smtp.gmail.com和端口587
  • 会话创建:使用认证信息(发件人邮箱和密码)创建会话。
  • 邮件消息:创建MimeMessage对象,并设置发件人、收件人和主题等信息。
  • 邮件正文:创建MimeBodyPart对象用于设置邮件内容,可以是纯文本或HTML格式。
  • 发送邮件:使用Transport.send()发送邮件。

注意事项

  • 安全性:请注意不要在生产代码中直接硬编码密码、邮箱等敏感信息,可以考虑使用环境变量或安全配置文件。
  • TLS/SSL设置:确保SMTP服务器支持TLS/SSL,并根据需要进行配置。
  • 允许低安全性应用访问:如果您使用Gmail等服务发送邮件,可能需要允许低安全性应用访问或生成应用专用密码。
相关文章
|
2月前
|
存储 Java API
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
【Azure 存储服务】Java Storage SDK 调用 uploadWithResponse 代码示例(询问ChatGTP得代码原型后人力验证)
|
13天前
|
JavaScript 前端开发 Java
Java 8 新特性详解及应用示例
Java 8 新特性详解及应用示例
|
2月前
|
消息中间件 负载均衡 Java
"深入Kafka核心:探索高效灵活的Consumer机制,以Java示例展示数据流的优雅消费之道"
【8月更文挑战第10天】在大数据领域,Apache Kafka凭借其出色的性能成为消息传递与流处理的首选工具。Kafka Consumer作为关键组件,负责优雅地从集群中提取并处理数据。它支持消息的负载均衡与容错,通过Consumer Group实现消息的水平扩展。下面通过一个Java示例展示如何启动Consumer并消费数据,同时体现了Kafka Consumer设计的灵活性与高效性,使其成为复杂消费场景的理想选择。
98 4
|
2月前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
2月前
|
设计模式 存储 Java
掌握Java设计模式的23种武器(全):深入解析与实战示例
掌握Java设计模式的23种武器(全):深入解析与实战示例
|
2月前
|
存储 缓存 监控
Java本地高性能缓存实践问题之在EncacheTest示例中正确移除一个缓存实例的问题如何解决
Java本地高性能缓存实践问题之在EncacheTest示例中正确移除一个缓存实例的问题如何解决
|
4月前
|
Java
static关键字在Java中的应用场景与示例
static关键字在Java中的应用场景与示例
|
3月前
|
消息中间件 Java Kafka
使用Java编写Kafka生产者和消费者示例
使用Java编写Kafka生产者和消费者示例
49 0
|
4月前
|
Java
Java 8 Collectors 深入解析与示例
Java 8 Collectors 深入解析与示例
|
Java Linux 数据安全/隐私保护
java发送邮件时遇到的坑
之前用163邮箱发邮件时明明是成功的,但是使用中国移动自己的邮箱时,无论如何在linux服务器中都发送不成功,一开始报如下错误: javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com at com.sun.mail.smtp.SMTPTransport.openServer(SMTPT
7889 0