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


【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务。 查看价格
【AokSend邮件API】:触发式邮件API,15元/万封,99%送达率。 查看价格
【烽火邮箱】:新人领取免费域名邮箱,可用作企业邮箱公司邮箱。 查看价格
Javax.mail发送邮件的9个完整示例
在Java程序中发送邮件是一个常见的需求,而Javax.mail正是一个功能强大的API库,可以帮助开发者轻松实现邮件发送功能。本文将通过9个具体的示例,全面展示Javax.mail的使用方法,帮助开发者全面掌握其功能。
目录
- Javax.mail基础操作
- 通过Javax.mail发送一封邮件
- Javax.mail的massSend方法
- Javax.mail的订阅邮件列表
- Javax.mail的邮件统计
- Javax.mail的邮件标题自定义
- Javax.mail的邮件正文自定义
- Javax.mail的邮件附件添加
- 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();
}
}
}
示例说明:
JavaxMail类是邮件发送的核心。- 使用
Mail类创建邮件头,通过setSubject、setBody等方法设置邮件内容。 - 使用
setMessage方法设置邮件的其他元数据,如类别名、属性和值。 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();
}
}
}
示例说明:
massSend方法接受多个参数,用于批量发送多封邮件。- 参数包括目标地址、主体数组、正文数组等。
- 通过循环设置多封邮件的元数据。
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();
}
}
}
示例说明:
subscribeToMailingList方法用于订阅邮件列表。- 参数包括目标地址、主题和正文。
- 邮件主题和正文可以通过
setSubject和setBody设置。
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();
}
}
}
示例说明:
mail.getSendStatistics()方法返回所有已发送的邮件记录。- 邮件记录可以通过索引访问,每个记录包含主题、日期、时间等信息。
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();
}
}
}
示例说明:
setSubject方法可以用来设置邮件标题。- 邮件标题可以通过
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();
}
}
}
示例说明:
setBody方法可以用来设置邮件正文。- 邮件正文可以通过
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();
}
}
}
示例说明:
addAttachment方法可以用来添加邮件附件。- 附件可以是图片、PDF或其他文件类型。
- 附件信息包括文件名、描述和目标路径。
9. Javax.mail的邮件日志记录
通过mail对象的statistics方法,可以记录邮件日志。


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