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

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

大大2小时前未命名6
烽火邮箱企业邮箱蜂邮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.xmlbuild.gradle中添加依赖项来实现。

<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类创建邮件头,通过setSubjectsetBody等方法设置邮件内容。
  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. 邮件主题和正文可以通过setSubjectsetBody设置。

5. Javax.mail的邮件统计

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

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. 邮件标题可以通过setSubjectsetBody设置。

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. 邮件正文可以通过setSubjectsetBody设置。

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方法,可以记录邮件日志。

🔔🔔🔔

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


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


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

🔔🔔🔔

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

4.2/5 - (9 votes)


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

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

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

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

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

分享给朋友: