java实现发送email小案例

网友投稿 334 2022-12-14


java实现发送email小案例

这是一个小的发送emai的案例,供大家参考,具体内容如下

代码里面放了很多注解,这里多说无益。

发送邮件实体类:

package com.yqx.emaildemo.demo;

import lombok.Data;

import org.apache.commons.mail.EmailAttachment;

import java.util.List;

/**

* 发送邮件实体类

*

* @author YangChingyu-k

* @date 2019/10/10 14:59

*/

@Data

public class MailInfo {

/**

* 收件人

*/

private List toAddress = null;

/**

* 抄送人地址

*/

private List ccAddress = null;

/**

* 密送人

*/

private List bccAddress = null;

/**

* 附件信息

*/

private List emailAttachments = null;

/**

* 邮件主题

*/

private String subject;

/**

* 邮件文本内容

*/

private String content;

public void addToAddress(String toAddress) {

this.toAddress.add(toAddress);

}

public void addToAddress(List toAddress) {

this.toAddress.addAll(toAddress);

}

public void addCcAddress (List ccAddress) {

if (!ccAddress.isEmpty()) {

this.ccAddress.addAll(ccAddress);

}

}

}

工具类:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import org.apache.commons.mail.HtmlEmail;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.List;

/**

* 发送邮件辅助工具类

*

* @author YangChingyu-k

* @date 2019/10/10 15:12

*/

public class MailUtil {

/**

* 邮箱

*/

private static String mailServerHost = "smtp.qq.com";

private static String mailSenderAddress = "xxx@qq.com";

private static String mailSenderNick = "YangChingyu-k";

private static String mailSenderUserName = "xxx@qq.com";

// 这里的密码是开启服务之后的授权码

private static String mailSenderPassWord = "xxx";

/**

* 发送邮件(Html格式,支持附件)

*

* @param mailInfo

*/

public static void sendMail(MailInfo mailInfo) {

try {

// 利用jar包中提供的HtmlEmail类

HtmlEmail email = new HtmlEmail();

// 配置信息

// 这里用的是QQ邮箱的地址,不同的邮箱采用的地址不同,官方有说明

email.setHostName(mailServerHost);

// 发送的地址,发送者昵称

email.setFrom(mailSenderAddress, mailSenderNick);

// 用户名,密码(这里的密码不是登录密码,而是开启POP3/SMTP服务之后获取的授权密码)

email.setAuthentication(mailSenderUserName, mailSenderPassWord);

// 编码

email.setCharset("UTF-8");

// 主题

email.setSubject(mailInfo.getSubject());

// 内容

email.setHtmlMsg(mailInfo.getContent());

// 添加附件

List emailAttachments = mailInfo.getEmailAttachments();

if (!emailAttachments.isEmpty()) {

for (int i=0; i

email.attach(emailAttachments.get(i));

}

}

// 收件人

List toAddress = mailInfo.getToAddress();

if (!toAddress.isEmpty()) {

for (int i=0; i

email.addTo(toAddress.get(i));

}

}

// 抄送人

List ccAddress = mailInfo.getCcAddress();

if (!ccAddress.isEmpty()) {

for (int i=0; i

email.addCc(ccAddress.get(i));

}

}

// 密送人

List bccAddress = mailInfo.getBccAddress();

if (!bccAddress.isEmpty()) {

for (int i=0; i

email.addBcc(bccAddress.get(i));

}

}

// 如果官方邮件关闭了,可以使用SSL的方式发送

// 使用QQ邮箱是暂时不需要的

// email.setSSLOnConnect(true);

// 发送

email.send();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("发送时间:" + sdf.format(new Date()));

System.out.println("发送人:" + mailSenderNick);

if (!toAddress.isEmpty()) {

for (int i=0;i

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

*

* @author YangChingyu-k

* @date 2019/10/10 15:53

*/

public class MainTest {

public static void main(String[] args) {

MailInfo mailInfo = new MailInfo();

// 收件人

List toList = new ArrayList<>();

toList.add("xxx.com");

// 抄送人

List ccList = new ArrayList<>();

ccList.add("xxx@qq.com");

// 密送人

List bccList = new ArrayList<>();

bccList.add("xxx@qq.com");

// 添加附件

EmailAttachment emailAttachment = new EmailAttachment();

// 文件全路径

emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");

// 附件:文件全名 (文件名 + .格式)

emailAttachment.setName("这是一个测试的附件.txt");

// 多个附件

List emailAttachments = new ArrXbhCkRayList<>();

emailAttachments.add(emailAttachment);

mailInfo.setEmailAttachments(emailAttachments);

// 收件人

mailInfo.setToAddress(toList);

// 抄送人

mailInfo.setCcAddress(ccList);

// 密送人

mailInfo.setBccAddress(bccList);

// 主题

mailInfo.setSubject("This is a object");

// 内容

mailInfo.setContent("

这是一段测试的内容~

");

// 调用工具类方法进行发送

MailUtil.sendMail(mailInfo);

}

}

我觉得注释应该写得很清楚了吧,这是作为一个demo来写的,分享一下,在写的时候一直遇到找不到地址之类的,或者服务没开之类的报错,这里都写了注重点的东西,这是第一次在代码里面一直写很多注释。

email.attach(emailAttachments.get(i));

}

}

// 收件人

List toAddress = mailInfo.getToAddress();

if (!toAddress.isEmpty()) {

for (int i=0; i

email.addTo(toAddress.get(i));

}

}

// 抄送人

List ccAddress = mailInfo.getCcAddress();

if (!ccAddress.isEmpty()) {

for (int i=0; i

email.addCc(ccAddress.get(i));

}

}

// 密送人

List bccAddress = mailInfo.getBccAddress();

if (!bccAddress.isEmpty()) {

for (int i=0; i

email.addBcc(bccAddress.get(i));

}

}

// 如果官方邮件关闭了,可以使用SSL的方式发送

// 使用QQ邮箱是暂时不需要的

// email.setSSLOnConnect(true);

// 发送

email.send();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("发送时间:" + sdf.format(new Date()));

System.out.println("发送人:" + mailSenderNick);

if (!toAddress.isEmpty()) {

for (int i=0;i

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

*

* @author YangChingyu-k

* @date 2019/10/10 15:53

*/

public class MainTest {

public static void main(String[] args) {

MailInfo mailInfo = new MailInfo();

// 收件人

List toList = new ArrayList<>();

toList.add("xxx.com");

// 抄送人

List ccList = new ArrayList<>();

ccList.add("xxx@qq.com");

// 密送人

List bccList = new ArrayList<>();

bccList.add("xxx@qq.com");

// 添加附件

EmailAttachment emailAttachment = new EmailAttachment();

// 文件全路径

emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");

// 附件:文件全名 (文件名 + .格式)

emailAttachment.setName("这是一个测试的附件.txt");

// 多个附件

List emailAttachments = new ArrXbhCkRayList<>();

emailAttachments.add(emailAttachment);

mailInfo.setEmailAttachments(emailAttachments);

// 收件人

mailInfo.setToAddress(toList);

// 抄送人

mailInfo.setCcAddress(ccList);

// 密送人

mailInfo.setBccAddress(bccList);

// 主题

mailInfo.setSubject("This is a object");

// 内容

mailInfo.setContent("

这是一段测试的内容~

");

// 调用工具类方法进行发送

MailUtil.sendMail(mailInfo);

}

}

我觉得注释应该写得很清楚了吧,这是作为一个demo来写的,分享一下,在写的时候一直遇到找不到地址之类的,或者服务没开之类的报错,这里都写了注重点的东西,这是第一次在代码里面一直写很多注释。

email.addTo(toAddress.get(i));

}

}

// 抄送人

List ccAddress = mailInfo.getCcAddress();

if (!ccAddress.isEmpty()) {

for (int i=0; i

email.addCc(ccAddress.get(i));

}

}

// 密送人

List bccAddress = mailInfo.getBccAddress();

if (!bccAddress.isEmpty()) {

for (int i=0; i

email.addBcc(bccAddress.get(i));

}

}

// 如果官方邮件关闭了,可以使用SSL的方式发送

// 使用QQ邮箱是暂时不需要的

// email.setSSLOnConnect(true);

// 发送

email.send();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("发送时间:" + sdf.format(new Date()));

System.out.println("发送人:" + mailSenderNick);

if (!toAddress.isEmpty()) {

for (int i=0;i

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

*

* @author YangChingyu-k

* @date 2019/10/10 15:53

*/

public class MainTest {

public static void main(String[] args) {

MailInfo mailInfo = new MailInfo();

// 收件人

List toList = new ArrayList<>();

toList.add("xxx.com");

// 抄送人

List ccList = new ArrayList<>();

ccList.add("xxx@qq.com");

// 密送人

List bccList = new ArrayList<>();

bccList.add("xxx@qq.com");

// 添加附件

EmailAttachment emailAttachment = new EmailAttachment();

// 文件全路径

emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");

// 附件:文件全名 (文件名 + .格式)

emailAttachment.setName("这是一个测试的附件.txt");

// 多个附件

List emailAttachments = new ArrXbhCkRayList<>();

emailAttachments.add(emailAttachment);

mailInfo.setEmailAttachments(emailAttachments);

// 收件人

mailInfo.setToAddress(toList);

// 抄送人

mailInfo.setCcAddress(ccList);

// 密送人

mailInfo.setBccAddress(bccList);

// 主题

mailInfo.setSubject("This is a object");

// 内容

mailInfo.setContent("

这是一段测试的内容~

");

// 调用工具类方法进行发送

MailUtil.sendMail(mailInfo);

}

}

我觉得注释应该写得很清楚了吧,这是作为一个demo来写的,分享一下,在写的时候一直遇到找不到地址之类的,或者服务没开之类的报错,这里都写了注重点的东西,这是第一次在代码里面一直写很多注释。

email.addCc(ccAddress.get(i));

}

}

// 密送人

List bccAddress = mailInfo.getBccAddress();

if (!bccAddress.isEmpty()) {

for (int i=0; i

email.addBcc(bccAddress.get(i));

}

}

// 如果官方邮件关闭了,可以使用SSL的方式发送

// 使用QQ邮箱是暂时不需要的

// email.setSSLOnConnect(true);

// 发送

email.send();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("发送时间:" + sdf.format(new Date()));

System.out.println("发送人:" + mailSenderNick);

if (!toAddress.isEmpty()) {

for (int i=0;i

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

*

* @author YangChingyu-k

* @date 2019/10/10 15:53

*/

public class MainTest {

public static void main(String[] args) {

MailInfo mailInfo = new MailInfo();

// 收件人

List toList = new ArrayList<>();

toList.add("xxx.com");

// 抄送人

List ccList = new ArrayList<>();

ccList.add("xxx@qq.com");

// 密送人

List bccList = new ArrayList<>();

bccList.add("xxx@qq.com");

// 添加附件

EmailAttachment emailAttachment = new EmailAttachment();

// 文件全路径

emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");

// 附件:文件全名 (文件名 + .格式)

emailAttachment.setName("这是一个测试的附件.txt");

// 多个附件

List emailAttachments = new ArrXbhCkRayList<>();

emailAttachments.add(emailAttachment);

mailInfo.setEmailAttachments(emailAttachments);

// 收件人

mailInfo.setToAddress(toList);

// 抄送人

mailInfo.setCcAddress(ccList);

// 密送人

mailInfo.setBccAddress(bccList);

// 主题

mailInfo.setSubject("This is a object");

// 内容

mailInfo.setContent("

这是一段测试的内容~

");

email.addBcc(bccAddress.get(i));

}

}

// 如果官方邮件关闭了,可以使用SSL的方式发送

// 使用QQ邮箱是暂时不需要的

// email.setSSLOnConnect(true);

// 发送

email.send();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("发送时间:" + sdf.format(new Date()));

System.out.println("发送人:" + mailSenderNick);

if (!toAddress.isEmpty()) {

for (int i=0;i

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

System.out.println("接收人:" + toAddress.get(i));

}

}

System.out.println("邮件发送成功...");

System.out.println("端口:" + email.getSmtpPort());

} catch (Exception e) {

System.out.println("邮件发送失败, error: " + e.getMessage());

e.printStackTrace();

}

}

}

测试main方法:

package com.yqx.emaildemo.demo;

import org.apache.commons.mail.EmailAttachment;

import java.util.ArrayList;

import java.util.List;

/**

* 测试:发送邮件 (先new出邮件实体类,赋值之后,再利用工具类方法进行发送操作)

*

* 注重点:

* 1) 邮箱需要开启POP3/SMTP服务

* 2) 使用的邮箱密码不是登录时的密码,而是开启以上服务之后的授权码

* 3) 邮箱地址必须是正确存在的,否则将会被退信处理

*

*

* @author YangChingyu-k

* @date 2019/10/10 15:53

*/

public class MainTest {

public static void main(String[] args) {

MailInfo mailInfo = new MailInfo();

// 收件人

List toList = new ArrayList<>();

toList.add("xxx.com");

// 抄送人

List ccList = new ArrayList<>();

ccList.add("xxx@qq.com");

// 密送人

List bccList = new ArrayList<>();

bccList.add("xxx@qq.com");

// 添加附件

EmailAttachment emailAttachment = new EmailAttachment();

// 文件全路径

emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");

// 附件:文件全名 (文件名 + .格式)

emailAttachment.setName("这是一个测试的附件.txt");

// 多个附件

List emailAttachments = new ArrXbhCkRayList<>();

emailAttachments.add(emailAttachment);

mailInfo.setEmailAttachments(emailAttachments);

// 收件人

mailInfo.setToAddress(toList);

// 抄送人

mailInfo.setCcAddress(ccList);

// 密送人

mailInfo.setBccAddress(bccList);

// 主题

mailInfo.setSubject("This is a object");

// 内容

mailInfo.setContent("

// 调用工具类方法进行发送

MailUtil.sendMail(mailInfo);

}

}

我觉得注释应该写得很清楚了吧,这是作为一个demo来写的,分享一下,在写的时候一直遇到找不到地址之类的,或者服务没开之类的报错,这里都写了注重点的东西,这是第一次在代码里面一直写很多注释。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:心动吗?正大光明的免费使用IntelliJ IDEA商业版
下一篇:Java多线程状态及方法实例解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~