JavaMail 邮件发送实战:解决依赖与配置问题

在 Java 开发中,邮件发送是一项十分实用的基础功能,不管是用户注册后的验证通知、系统异常的告警提醒,还是日常的信息推送,都能用到它。而对于刚接触 Java 开发的新手来说,实现邮件发送往往会卡在两个关键环节:一是 Maven 依赖的配置与加载,稍不注意就会出现 “程序包不存在” 的报错;二是邮件服务器的参数设置,比如授权码获取、SMTP 端口选择等,一个小细节出错就会导致邮件发送失败。

本文就以 QQ 邮箱为例,结合 Maven 项目结构,手把手带你完成从依赖配置、代码编写到测试运行的全流程,还会针对新手常遇到的依赖标红、发送无响应等问题给出解决方案,让你轻松掌握 Java 邮件发送的核心技能。

首先是开启qq邮箱的pop3服务,获取授权码

这样的目录,新增这个文件

package com.servlet.email;

import javax.mail.Authenticator;
import javax.mail.Message;
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 java.util.Properties;

public class SendEmail {
    // 发送邮件的核心方法
    public static void send(String toEmail, String subject, String content) {
        // 1. 邮箱服务器配置(QQ邮箱为例)
        String host = "smtp.qq.com";
        String port = "587";
        String fromEmail = "2474728161@qq.com"; // 替换为发件人QQ邮箱
        String authCode = "*************"; // 替换为QQ邮箱SMTP授权码

        // 2. 设置邮件属性
        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp"); // 协议
        props.setProperty("mail.smtp.host", host); // 服务器
        props.setProperty("mail.smtp.port", port); // 端口
        props.setProperty("mail.smtp.auth", "true"); // 需要认证
        props.setProperty("mail.smtp.starttls.enable", "true"); // 启用TLS加密

        // 3. 创建认证器
        Authenticator auth = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(fromEmail, authCode);
            }
        };

        // 4. 获取会话
        Session session = Session.getInstance(props, auth);
        session.setDebug(true); // 调试模式(可选)

        try {
            // 5. 创建邮件消息
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(fromEmail)); // 发件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); // 收件人
            message.setSubject(subject); // 主题
            message.setText(content); // 内容

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

        } catch (MessagingException e) {
            System.err.println("邮件发送失败:" + e.getMessage());
            e.printStackTrace();
        }
    }

    // main方法测试
    public static void main(String[] args) {
        // 测试发送(替换为实际收件人邮箱)
        send("6928537@qq.com", "测试邮件", "这是通过Java发送的测试内容");
    }
}

放这段代码在你的SendMail.java文件里面👆

我的邮箱改成你的邮箱,授权码就写qq邮箱里面开通服务给你的码

pom文件放入这段,放在dependencies里面,重载一下maven配置,SendMail就不会标红

右键运行

看控制台👇

看图形化界面,这是你发的

完成!

关于bracku

网站创始人
此条目发表在Recommend分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注