当前位置:首页 > 未命名 > 正文内容

Javax.mail发送邮件的9个完整示例

大大1年前 (2025-10-02)未命名704
烽火邮箱企业邮箱蜂邮EDM邮件营销系统

【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格

Javax.mail发送邮件的9个完整示例

在Java程序中发送邮件是一个常见的需求,而Javax.mail正是一个功能强大的API库,可以帮助开发者轻松实现邮件发送功能。本文将通过9个具体的示例,全面展示Javax.mail的使用方法,帮助开发者全面掌握其功能。


目录

  1. Javax.mail基础操作
  2. 通过Javax.mail发送一封邮件
  3. Javax.mail的massSend方法
  4. Javax.mail的订阅邮件列表
  5. Javax.mail的邮件统计
  6. Javax.mail的邮件标题自定义
  7. Javax.mail的邮件正文自定义
  8. Javax.mail的邮件附件添加
  9. Javax.mail的邮件日志记录

1. Javax.mail基础操作

在使用Javax.mail之前,需要首先确保Javax.mail库已经被正确地添加到项目中。通常,可以通过在pom.xml或build.gradle中添加依赖项来实现。

🔔🔔🔔

【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格


【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格

🔔🔔🔔

<dependency>
    <groupId>javax</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
    <scope>runtime</scope>
</dependency>

Javax.mail提供了一个JavaxMail类,它是整个邮件发送的核心。该类提供了发送邮件、订阅邮件列表、管理邮件列表等功能。


2. 通过Javax.mail发送一封邮件

发送一封邮件是最基本的操作之一。以下是一个简单的示例:

import com.sun.mail.Mail;
import com.sun.mail.MailException;
import com.sun.mail.MessagingException;
import com.sun.mail.Sent;
import com.sun.mail.textsimple.TextSimple;
import com.javax.mail.JavaxMail;

public class SendEmailExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            // 创建邮件头
            Mail mail = new Mail() {
                public static void setMessage(
                        String subject, String body,
                        String className, String property, String value) {
                    setSubject(subject);
                    setBody(body);
                    setMessage.className(className);
                    setMessage.property(property);
                    setMessage.value(value);
                    return this;
                }
            };

            // 设置邮件内容
            setSubject("测试邮件主题");
            setBody("这是测试邮件正文。");
            setMessage.className("MIE法则邮件");
            setMessage.property("From", "test@example.com");
            setMessage.value("to@example.com");

            // 发送邮件
            Sent sent = mail.send(
                    "test@example.com",
                    "主题", // 主体
                    "邮件正文" // 正文
                );

            System.out.println("发送邮件返回码:" + sent.getReturnCode());
            System.out.println("发送邮件返回信息:" + sent.getReturnMessage());

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

示例说明:

  1. JavaxMail类是邮件发送的核心。
  2. 使用Mail类创建邮件头,通过setSubject、setBody等方法设置邮件内容。
  3. 使用setMessage方法设置邮件的其他元数据,如类别名、属性和值。
  4. send方法发送邮件,并返回Sent对象,该对象包含发送邮件的返回码和返回信息。

3. Javax.mail的massSend方法

massSend方法可以批量发送多封邮件,适用于需要同时发送多封邮件的情况。

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class MassSendExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            // 创建邮件头
            Mail mail = new Mail() {
                public static void setMessage(
                        String[] subjects, String[] bodies,
                        String[] className, String[] property, String[] value) {
                    for (int i = 0; i < subjects.length; i++) {
                        setMessage(subjects[i], bodies[i], className[i], property[i], value[i]);
                    }
                    return this;
                }
            };

            // 设置邮件内容
            String[] subjects = {"邮件1主题", "邮件2主题"};
            String[] bodies = {"邮件1正文", "邮件2正文"};
            String[] className = {"MIE法则邮件"};
            String[] property = {"From"};
            String[] value = {"test@example.com"};

            Mail sent = mail.massSend(
                    "test@example.com",
                    subjects, // 主体数组
                    bodies, // 正文数组
                    className, // 类别数组
                    property, // 属性数组
                    value // 值数组
                );

            System.out.println("批量发送邮件返回码:" + sent.getReturnCode());
            System.out.println("批量发送邮件返回信息:" + sent.getReturnMessage());
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. massSend方法接受多个参数,用于批量发送多封邮件。
  2. 参数包括目标地址、主体数组、正文数组等。
  3. 通过循环设置多封邮件的元数据。

4. Javax.mail的订阅邮件列表

通过订阅邮件列表,可以快速响应邮件列表中的新邮件。以下是一个订阅邮件列表的示例:

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class SubscribeToMailingListExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            // 创建邮件头
            Mail mail = new Mail() {
                public static void setMessage(
                        String subject, String body,
                        String className, String property, String value) {
                    setMessage(subject, body, className, property, value);
                    return this;
                }
            };

            // 设置邮件内容
            setSubject("订阅邮件列表通知");
            setBody("您已经被添加到邮件列表中。");
            setMessage.className("MIE法则邮件");
            setMessage.property("From", "test@example.com");
            setMessage.value("订阅者@example.com");

            // 订阅邮件列表
            Mail sent = mail.subscribeToMailingList(
                    new String[] { "订阅者@example.com" },
                    "订阅者地址", // 邮件主题
                    "您已经被添加到邮件列表中。" // 邮件正文
                );

            System.out.println("订阅邮件列表返回码:" + sent.getReturnCode());
            System.out.println("订阅邮件列表返回信息:" + sent.getReturnMessage());
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. subscribeToMailingList方法用于订阅邮件列表。
  2. 参数包括目标地址、主题和正文。
  3. 邮件主题和正文可以通过setSubject和setBody设置。

5. Javax.mail的邮件统计

可以通过Mail对象的统计方法,查看已发送的邮件记录。

Javax.mail发送邮件的9个完整示例

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class EmailStatisticsExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            Mail mail = new Mail() {
                public static void setMessage(
                        String[] subjects, String[] bodies,
                        String[] className, String[] property, String[] value) {
                    for (int i = 0; i < subjects.length; i++) {
                        setMessage(subjects[i], bodies[i], className[i], property[i], value[i]);
                    }
                    return this;
                }
            };

            // 设置邮件内容
            String[] subjects = {"邮件1主题", "邮件2主题"};
            String[] bodies = {"邮件1正文", "邮件2正文"};
            String[] className = {"MIE法则邮件"};
            String[] property = {"From"};
            String[] value = {"test@example.com"};

            // 发送邮件
            Sent sent = mail.send(
                    "test@example.com",
                    "邮件主题",
                    "邮件正文"
                );

            // 统计邮件
            Mail[] mails = mail.getSendStatistics();
            for (Mail[] mail : mails) {
                System.out.println("邮件主题:" + mail[0].getSubject());
                System.out.println("发送日期:" + mail[0].getDate());
                System.out.println("发送时间:" + mail[0].getTime());
                System.out.println("发送返回码:" + mail[0].getReturnCode());
                System.out.println("发送返回信息:" + mail[0].getReturnMessage());
                System.out.println("------------------------");
            }
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. mail.getSendStatistics()方法返回所有已发送的邮件记录。
  2. 邮件记录可以通过索引访问,每个记录包含主题、日期、时间等信息。

6. Javax.mail的邮件标题自定义

在发送邮件时,可以通过setSubject方法自定义邮件标题。

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class CustomSubjectExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            Mail mail = new Mail() {
                public static void setMessage(
                        String subject, String body,
                        String className, String property, String value) {
                    setSubject(subject);
                    setBody(body);
                    setMessage.className(className);
                    setMessage.property(property);
                    setMessage.value(value);
                    return this;
                }
            };

            // 设置邮件内容
            setSubject("自定义邮件标题!");
            setBody("邮件正文内容。");
            setMessage.className("MIE法则邮件");
            setMessage.property("From", "test@example.com");
            setMessage.value("to@example.com");

            // 发送邮件
            Sent sent = mail.send(
                    "to@example.com",
                    "自定义邮件标题",
                    "邮件正文内容"
                );

            System.out.println("发送邮件返回码:" + sent.getReturnCode());
            System.out.println("发送邮件返回信息:" + sent.getReturnMessage());
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. setSubject方法可以用来设置邮件标题。
  2. 邮件标题可以通过setSubject和setBody设置。

7. Javax.mail的邮件正文自定义

邮件正文可以通过setBody方法进行自定义。

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class CustomBodyExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            Mail mail = new Mail() {
                public static void setMessage(
                        String subject, String body,
                        String className, String property, String value) {
                    setSubject(subject);
                    setBody(body);
                    setMessage.className(className);
                    setMessage.property(property);
                    setMessage.value(value);
                    return this;
                }
            };

            // 设置邮件内容
            setSubject("自定义邮件正文");
            setBody("这是自定义的邮件正文内容。");
            setMessage.className("MIE法则邮件");
            setMessage.property("To", "to@example.com");
            setMessage.value("from@example.com");

            // 发送邮件
            Sent sent = mail.send(
                    "to@example.com",
                    "自定义邮件正文",
                    "这是自定义的邮件正文内容。"
                );

            System.out.println("发送邮件返回码:" + sent.getReturnCode());
            System.out.println("发送邮件返回信息:" + sent.getReturnMessage());
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. setBody方法可以用来设置邮件正文。
  2. 邮件正文可以通过setSubject和setBody设置。

8. Javax.mail的邮件附件添加

通过set附件方法可以添加邮件附件。

import com.javax.mail.JavaxMail;
import com.javax.mail.Mail;

public class AttachmentsExample {
    public static void main(String[] args) {
        JavaxMail javaxMail = new JavaxMail();
        try {
            Mail mail = new Mail() {
                public static void setMessage(
                        String[] subjects, String[] bodies,
                        String[] className, String[] property, String[] value) {
                    for (int i = 0; i < subjects.length; i++) {
                        setMessage(subjects[i], bodies[i], className[i], property[i], value[i]);
                    }
                    return this;
                }
            };

            // 设置邮件内容
            String[] subjects = {"邮件主题"};
            String[] bodies = {"邮件正文和附件内容。"};
            String[] className = {"MIE法则邮件"};
            String[] property = {"From"};
            String[] value = {"to@example.com"};

            // 添加附件
            addAttachment("test.jpg", "测试附件.jpg", "图片描述");
            addAttachment("test.pdf", "测试附件.pdf", "文件描述");

            // 发送邮件
            Sent sent = mail.send(
                    "to@example.com",
                    "包含附件的邮件",
                    "邮件正文和附件内容。"
                );

            System.out.println("发送邮件返回码:" + sent.getReturnCode());
            System.out.println("发送邮件返回信息:" + sent.getReturnMessage());
        } catch (JavaxMailException e) {
            e.printStackTrace();
        }
    }
}

示例说明:

  1. addAttachment方法可以用来添加邮件附件。
  2. 附件可以是图片、PDF或其他文件类型。
  3. 附件信息包括文件名、描述和目标路径。

9. Javax.mail的邮件日志记录

通过mail对象的statistics方法,可以记录邮件日志。

4.2/5 - (9 votes)


蜂邮EDM邮件营销系统烽火邮箱企业邮箱

【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格

扫描二维码推送至手机访问。

版权声明:本文由MailBing邮件营销博客发布,如需转载请注明出处。

本文链接:https://edm.mailbing.com/id6749.html

分享给朋友: