Java 发送邮件示例

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: 本示例展示了如何使用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等服务发送邮件,可能需要允许低安全性应用访问或生成应用专用密码。
相关文章
|
1月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
331 4
|
2月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
373 3
|
2月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
385 0
Java API 开发者
97 0
|
4月前
|
安全 Java 网络安全
Java 实现 SMTP 协议调用的详细示例及实战指南 SMTP Java 调用示例
本文介绍了如何使用Java调用SMTP协议发送邮件,涵盖SMTP基本概念、JavaMail API配置、代码实现及注意事项,适合Java开发者快速掌握邮件发送功能集成。
436 0
|
4月前
|
算法 搜索推荐 Java
Java中的Collections.shuffle()方法及示例
`Collections.shuffle()` 是 Java 中用于随机打乱列表顺序的方法,基于 Fisher-Yates 算法实现,支持原地修改。可选传入自定义 `Random` 对象以实现结果可重复,适用于抽奖、游戏、随机抽样等场景。
203 0
|
5月前
|
存储 安全 Java
应届生面试高频 Java 基础问题及实操示例解析
本文总结了Java基础面试中的高频考点,包括数据类型分类、final修饰符的三种用途、static关键字特性、==与equals的区别、Java只有值传递的特性、String的不可变性、Error与Exception的差异、程序初始化顺序规则,以及IO流的字节流/字符流分类。每个问题都配有简明定义和典型示例,如用final修饰变量示例、static方法调用限制说明等,帮助应聘者快速掌握核心概念和实际应用场景。
103 0
|
5月前
|
Java 关系型数据库 MySQL
2025 年互联网公司校招 Java 面试题总结及答案实操示例解析
本项目基于Spring Boot 3与Java 17技术栈,围绕校园招聘常见面试题,提供核心知识点的实操示例。涵盖多线程、RESTful API设计、数据库操作(Spring Data JPA)、事务管理及异常处理等。通过完整代码实现与运行步骤,帮助理解用户管理、线程池配置等实际应用场景。资源包含项目结构、关键代码示例(如User实体类、UserService服务层、ThreadService多线程实现)及数据库迁移脚本,适合深入学习与实践。环境要求:JDK 17+、Maven 3.8+、MySQL 8.0+。
212 3
|
12月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
350 38

热门文章

最新文章