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
中添加依赖项来实现。
<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
方法,可以记录邮件日志。
【烽火邮箱】:烽火邮箱是一款简洁高效的企业邮箱平台,新客户赠送免费企业邮箱,一个起卖、按月付费(低至9.9元);支持别名邮箱及群组邮箱,支持定制无限邮箱。高权重纯净IP池,系统自带反垃圾机制。
立即查看 >> :企业邮箱价格
【蜂邮EDM】:邮件群发系统,EDM邮件营销平台,邮件代发服务,专业研发定制邮件营销系统及邮件群发解决方案!蜂邮自研产品线主要分为标准版、外贸版、企业版、定制版,及邮件API邮件SMTP接口服务。
立即查看 >> :邮件发送价格
【AokSend邮件API】:专注触发式邮件API发送服务。15元/万封,发送验证码邮件、忘记密码邮件、通知告警邮件等,不限速。综合送达率99%、进箱率98%。触发邮件也叫事务性邮件或推送邮件,包含:验证码邮件、重置密码邮件、余额提醒邮件、会员到期邮件、账号认证邮件等!
立即查看 >> :邮件发送价格


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