java 给多人发送、抄送
- 关键技术:
- 1、MimeMessage的setRecipients方法设置邮件的收件人,其中Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.
CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送着。- 2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。
- SourceCode:
- import javax.mail.Address;
- import javax.mail.BodyPart;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.Multipart;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- public class MultiMailsender {
- /**
- * 发送邮件给多个接收者
- * @param mailInfo 带发送邮件的信息
- * @return
- */
- public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){
- MyAuthenticator authenticator = null;
- if (mailInfo.isValidate()) {
- authenticator = new MyAuthenticator(mailInfo.getUserName(),
- mailInfo.getPassword());
- }
- Session sendMailSession = Session.getInstance(mailInfo
- .getProperties(), authenticator);
- try {
- Message mailMessage = new MimeMessage(sendMailSession);
- // 创建邮件发送者地址
- Address from = new InternetAddress(mailInfo.getFromAddress());
- mailMessage.setFrom(from);
- // 创建邮件的接收者地址,并设置到邮件消息中
- Address[] tos = null;
- String[] receivers = mailInfo.getReceivers();
- if (receivers != null){
- // 为每个邮件接收者创建一个地址
- tos = new InternetAddress[receivers.length + 1];
- tos[0] = new InternetAddress(mailInfo.getToAddress());
- for (int i=0; i<receivers.length; i++){
- tos[i+1] = new InternetAddress(receivers[i]);
- }
- } else {
- tos = new InternetAddress[1];
- tos[0] = new InternetAddress(mailInfo.getToAddress());
- }
- // 将所有接收者地址都添加到邮件接收者属性中
- mailMessage.setRecipients(Message.RecipientType.TO, tos);
- mailMessage.setSubject(mailInfo.getSubject());
- mailMessage.setSentDate(new Date());
- // 设置邮件内容
- Multipart mainPart = new MimeMultipart();
- BodyPart html = new MimeBodyPart();
- html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
- mainPart.addBodyPart(html);
- mailMessage.setContent(mainPart);
- // 发送邮件
- Transport.send(mailMessage);
- return true;
- } catch (MessagingException ex) {
- ex.printStackTrace();
- }
- return false;
- }
- /**
- * 发送带抄送的邮件
- * @param mailInfo 待发送邮件的消息
- * @return
- */
- public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){
- MyAuthenticator authenticator = null;
- if (mailInfo.isValidate()) {
- authenticator = new MyAuthenticator(mailInfo.getUserName(),
- mailInfo.getPassword());
- }
- Session sendMailSession = Session.getInstance(mailInfo
- .getProperties(), authenticator);
- try {
- Message mailMessage = new MimeMessage(sendMailSession);
- // 创建邮件发送者地址
- Address from = new InternetAddress(mailInfo.getFromAddress());
- mailMessage.setFrom(from);
- // 创建邮件的接收者地址,并设置到邮件消息中
- Address to = new InternetAddress(mailInfo.getToAddress());
- mailMessage.setRecipient(Message.RecipientType.TO, to);
- // 获取抄送者信息
- String[] ccs = mailInfo.getCcs();
- if (ccs != null){
- // 为每个邮件接收者创建一个地址
- Address[] ccAdresses = new InternetAddress[ccs.length];
- for (int i=0; i<ccs.length; i++){
- ccAdresses[i] = new InternetAddress(ccs[i]);
- }
- // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC
- mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);
- }
- mailMessage.setSubject(mailInfo.getSubject());
- mailMessage.setSentDate(new Date());
- // 设置邮件内容
- Multipart mainPart = new MimeMultipart();
- BodyPart html = new MimeBodyPart();
- html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
- mainPart.addBodyPart(html);
- mailMessage.setContent(mainPart);
- // 发送邮件
- Transport.send(mailMessage);
- return true;
- } catch (MessagingException ex) {
- ex.printStackTrace();
- }
- return false;
- }
- public static void main(String[] args) {
- // 创建邮件信息
- MultiMailSenderInfo mailInfo = new MultiMailSenderInfo();
- mailInfo.setMailServerHost("smtp.sina.com.cn");
- mailInfo.setMailServerPort("25");
- mailInfo.setValidate(true);
- mailInfo.setUserName("***");
- mailInfo.setPassword("***");
- mailInfo.setFromAddress("***@sina.com");
- mailInfo.setToAddress("***@163.com");
- mailInfo.setSubject("MyMail测试");
- mailInfo.setContent("我的邮件测试/n/rMy test mail/n/r");
- String[] receivers = new String[]{"***@163.com", "***@tom.com"};
- String[] ccs = receivers;
- mailInfo.setReceivers(receivers);
- mailInfo.setCcs(ccs);
- MultiMailsender.sendMailtoMultiReceiver(mailInfo);
- MultiMailsender.sendMailtoMultiCC(mailInfo);
- }
- /**
- * 发送多接收者类型邮件的基本信息
- */
- public static class MultiMailSenderInfo extends MailSenderInfo{
- // 邮件的接收者,可以有多个
- private String[] receivers;
- // 邮件的抄送者,可以有多个
- private String[] ccs;
- public String[] getCcs() {
- return ccs;
- }
- public void setCcs(String[] ccs) {
- this.ccs = ccs;
- }
- public String[] getReceivers() {
- return receivers;
- }
- public void setReceivers(String[] receivers) {
- this.receivers = receivers;
- }
- }
- }
java 给多人发送、抄送的更多相关文章
- JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)
JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...
- Java 实现邮件的发送
Java 实现邮件的发送 开发邮箱发送功能必须看邮箱方面的资料 改一些东西 (我的是qq 邮箱哟 开通 POP3 ...
- Android Java使用JavaMail API发送和接收邮件的代码示例
JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...
- Java实现QQ邮件发送
首先我们需要两个jar包,点击下面即可下载这两个包: JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar 我们这里采用QQ邮箱发送邮件为例,代码如 ...
- System.Net.Mail邮件发送抄送附件(多个)
/// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...
- 谈谈Java利用原始HttpURLConnection发送POST数据
这篇文章主要给大家介绍java利用原始httpUrlConnection发送post数据,设计到httpUrlConnection类的相关知识,感兴趣的朋友跟着小编一起学习吧 URLConnectio ...
- 利用java实现的一个发送手机短信的小例子
今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...
- 转:Java开发牛人十大必备网站
原文来自于:http://www.importnew.com/7980.html 以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质 ...
- Java开发牛人十大必备网站
以下是我收集的Java开发牛人必备的网站.这些网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等.质量是衡量一个网站的关键因素,我个人认为这些网站质量都很好.接下来,我会跟大家分享我 ...
随机推荐
- ios 地图,系统升级为12后,进入地图,大头针全部默认展开问题,以及在选择不同距离的情况下,如何刷新地图的区域范围
1.第一个问题,大头针在ios12,默认展开问题,需要设置大头针视图的默认选中属性为NO - (MKAnnotationView *)mapView:(MKMapView *)mapView view ...
- Java IO 学习(四)BIO/NIO
本文会尝试介绍Java中BIO与NIO的范例与原理 使用的模型非常简单:服务器--客户端模型,服务器会将客户端发送的字符串原样发回来.也就是所谓的echo server. BIO 也就是所谓的Sock ...
- advanced-performance-troubleshooting-waits-latches-spinlocks
https://www.sqlskills.com/blogs/paul/advanced-performance-troubleshooting-waits-latches-spinlocks/
- Docker 创建image
images 是containers的基础.每次使用docker run 命令都要指定image. 列出本地images zane@zane-V:~$ docker images REPO ...
- 给力Mac下的思维整理软件,思维导图软件合辑
给力Mac下的思维整理软件,思维导图软件合辑 1.Mindjet MindManager for mac 10.0.211 经典的头脑风暴思维导图软件 最新破解Mindjet MindManager ...
- [置顶]
django快速获取项目所有的URL
django快速获取项目所有的URL django1.10快速获取项目所有的URL列表,可以用于权限控制 函数如下: import re def get_url(urllist , parent='' ...
- Graphicmagick编译
为了需求给Graphicmagick加了几个支持,版本分别为mozjpeg2.1,bzip2-1.0.6,libpng-1.6.18,libwebp-0.4.3,mozjpeg-2.1,tiff-4. ...
- spring batch的使用和定时器Quart的使用
Spring Batch是一个基于Spring的企业级批处理框架,它通过配合定时器Quartz来轻易实现大批量的数据读取或插入,并且全程自动化,无需人员管理. 在使用spring batch之前,得对 ...
- Confluence JIRA快速入门
Confluence JIRA快速入门 http://www.confluence.cn/pages/viewpage.action?pageId=2916470
- jquery 限制文本框只能输入数字
$("input[name='fangwenyudinhuishu']").keyup(function(){ var tmptxt=$(this).val(); $(this). ...