Flask接口签名sign原理与实例代码浅析
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
/**
* 抄送人地址
*/
private List
/**
* 密送人
*/
private List
/**
* 附件信息
*/
private List
/**
* 邮件主题
*/
private String subject;
/**
* 邮件文本内容
*/
private String content;
public void addToAddress(String toAddress) {
this.toAddress.add(toAddress);
}
public void addToAddress(List
this.toAddress.addAll(toAddress);
}
public void addCcAddress (List
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
if (!emailAttachments.isEmpty()) {
for (int i=0; i email.attach(emailAttachments.get(i)); } } // 收件人 List if (!toAddress.isEmpty()) { for (int i=0; i email.addTo(toAddress.get(i)); } } // 抄送人 List if (!ccAddress.isEmpty()) { for (int i=0; i email.addCc(ccAddress.get(i)); } } // 密送人 List 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.add("xxx.com"); // 抄送人 List ccList.add("xxx@qq.com"); // 密送人 List bccList.add("xxx@qq.com"); // 添加附件 EmailAttachment emailAttachment = new EmailAttachment(); // 文件全路径 emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt"); // 附件:文件全名 (文件名 + .格式) emailAttachment.setName("这是一个测试的附件.txt"); // 多个附件 List 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
if (!toAddress.isEmpty()) {
for (int i=0; i email.addTo(toAddress.get(i)); } } // 抄送人 List if (!ccAddress.isEmpty()) { for (int i=0; i email.addCc(ccAddress.get(i)); } } // 密送人 List 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.add("xxx.com"); // 抄送人 List ccList.add("xxx@qq.com"); // 密送人 List bccList.add("xxx@qq.com"); // 添加附件 EmailAttachment emailAttachment = new EmailAttachment(); // 文件全路径 emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt"); // 附件:文件全名 (文件名 + .格式) emailAttachment.setName("这是一个测试的附件.txt"); // 多个附件 List 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
if (!ccAddress.isEmpty()) {
for (int i=0; i email.addCc(ccAddress.get(i)); } } // 密送人 List 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.add("xxx.com"); // 抄送人 List ccList.add("xxx@qq.com"); // 密送人 List bccList.add("xxx@qq.com"); // 添加附件 EmailAttachment emailAttachment = new EmailAttachment(); // 文件全路径 emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt"); // 附件:文件全名 (文件名 + .格式) emailAttachment.setName("这是一个测试的附件.txt"); // 多个附件 List 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
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.add("xxx.com"); // 抄送人 List ccList.add("xxx@qq.com"); // 密送人 List bccList.add("xxx@qq.com"); // 添加附件 EmailAttachment emailAttachment = new EmailAttachment(); // 文件全路径 emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt"); // 附件:文件全名 (文件名 + .格式) emailAttachment.setName("这是一个测试的附件.txt"); // 多个附件 List 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.add("xxx.com");
// 抄送人
List
ccList.add("xxx@qq.com");
// 密送人
List
bccList.add("xxx@qq.com");
// 添加附件
EmailAttachment emailAttachment = new EmailAttachment();
// 文件全路径
emailAttachment.setPath("C:/Users/YangChingyu-k/Desktop/lemon.txt");
// 附件:文件全名 (文件名 + .格式)
emailAttachment.setName("这是一个测试的附件.txt");
// 多个附件
List
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~