java meil
import java.util.Date;
import java.util.List;
import java.util.Properties; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility; /**
* 突然想起要可以写一下博客,忘记是那个版本的 mail 了 ,可以确定的是不是最新版的 ,系统是老系统来的
* @author mysterious
*
*/
public class ComplexMail { // 复杂邮件
// 记得开 POP3/SMTP/IMAP 服务
private static final String account_number = "abc@163.com"; // 也是发送人
private static final String password = "***"; // 密钥 // //
private static final String Email_server_address = "smtp.163.com"; // 163 :smtp.163.com qq:smtp.qq.com /*static { // 为了防止 附件出现 文件类型变bin类型 // 未测试
System.setProperty("mail.mime.splitlongparameters", "false");
System.setProperty("mail.mime.charset", "UTF-8");
}*/ public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){ // // 收件人地址,html,附件
// 创建邮件服务器链接会话
/*MimeMessage 类 ----- 代表整封邮件,包括MIME对象的消息头与MimeMultipart对象
MimeBodyPart 类 ---- 代表邮件中一个MIME消息
MimeMultiPart 类 ---- 代表一个或多个MIME消息组合而成的组合MIME消息 */
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp"); // // 使用的协议(JavaMail规范要求)
properties.put("mail.smtp.host", Email_server_address); // // 发件人的邮箱的 SMTP 服务器地址
properties.put("mail.smtp.auth", "true");// 连接认证
properties.put("mail.debug", "true");// 在控制台显示连接日志信息
//properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用
// 而用163邮箱的时候就不需要验证码,但是 SSL 加密时(端口465/587),总是会出现各种错误,不用 SSL 加密(端口25)就可以正常发送 Session session = Session.getInstance(properties);// 与邮件服务器连接会话 // 步骤二:创建Message
MimeMessage message = new MimeMessage(session);
// 设置邮件头(简单邮件和复杂邮件相同
try {
message.setFrom(new InternetAddress(account_number, "协同系统", "UTF-8")); // 发件人 加个昵称
//message.setRecipients(Message.RecipientType.TO, "");
message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人员", "UTF-8")); // 收件人 价格昵称
message.setSubject("图纸", "UTF-8"); // 邮件主题 MimeMultipart mimeMultipart = new MimeMultipart();
if(enclosure.size()>0){
for(int i = 0;i<enclosure.size();i++){
System.out.println(enclosure.get(i));
// 设置邮件体
MimeBodyPart attachment = new MimeBodyPart(); // 将所有 BodyPart 组合起来变为 Multipart // 将最后合成的 MultiPart 交给 MimeMessage 对象
attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 将附件数据添加到“节点” (链接数据文件)
// 因中文附件名编码的问题,会产生乱码,必须使用 JavaMail 提供的工具类 MimeUtility 来包装中文字符
// 设置 filename 可自动生成: Content-Disposition:attachment;filename=xxx
String name = enclosure.get(i);
attachment.setFileName(MimeUtility.encodeText(name.substring(19))); // 可以防止 出现 文件类型变bin类型 mimeMultipart.addBodyPart(attachment);
}
} // html
System.out.println("HTML_content>>>"+HTML_content);
MimeBodyPart content = new MimeBodyPart();
content.setContent(HTML_content, "text/html;charset=utf-8"); mimeMultipart.addBodyPart(content);
mimeMultipart.setSubType("mixed"); // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)
message.setContent(mimeMultipart);
message.setSentDate(new Date()); // 设置发件时间
message.saveChanges();// 保存设置 Transport transport = session.getTransport();// 4. 根据 Session 获取邮件传输对象 transport.connect(Email_server_address,account_number, password); // 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
transport.close();// 关闭连接
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } public static void main(String[] args) {
// TODO Auto-generated method stub //ComplexMail complexMail =new ComplexMail();
//mailbox 是 主要内容,我这里是 HTML 的代码,AnnexDetailsList 为附件的 地址
//complexMail.Understanding_email("", mailbox, AnnexDetailsList); // 收件人地址,html,附件 } }
import java.util.Date;import java.util.List;import java.util.Properties;
import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeBodyPart;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMultipart;import javax.mail.internet.MimeUtility;
/** * 突然想起要可以写一下博客,忘记是那个版本的 mail 了 ,可以确定的是不是最新版的 ,系统是老系统来的 * @author mysterious * */public class ComplexMail { // 复杂邮件 // 记得开 POP3/SMTP/IMAP 服务//private static final String account_number = "calmness_killer@163.com"; // 也是发送人//private static final String password = "XHNBBISRRRMHACWR"; // 密钥private static final String account_number = "sjst2021@163.com"; // 也是发送人private static final String password = "TFXQXEGWNOJVWOVE"; // 密钥 // // LMH@183894461st // TFXQXEGWNOJVWOVEprivate static final String Email_server_address = "smtp.163.com"; // 163 :smtp.163.com qq:smtp.qq.com/*static { // 为了防止 附件出现 文件类型变bin类型 // 未测试System.setProperty("mail.mime.splitlongparameters", "false");System.setProperty("mail.mime.charset", "UTF-8");}*/public void Understanding_email(String addressee,String HTML_content,List<String> enclosure){ // // 收件人地址,html,附件// 创建邮件服务器链接会话 /*MimeMessage 类 ----- 代表整封邮件,包括MIME对象的消息头与MimeMultipart对象MimeBodyPart 类 ---- 代表邮件中一个MIME消息MimeMultiPart 类 ---- 代表一个或多个MIME消息组合而成的组合MIME消息 */Properties properties = new Properties(); properties.put("mail.transport.protocol", "smtp"); // // 使用的协议(JavaMail规范要求) properties.put("mail.smtp.host", Email_server_address); // // 发件人的邮箱的 SMTP 服务器地址 properties.put("mail.smtp.auth", "true");// 连接认证 properties.put("mail.debug", "true");// 在控制台显示连接日志信息 //properties.put("mail.smtp.ssl.enable", "true");//设置是否使用ssl安全连接 ---一般都使用 // 而用163邮箱的时候就不需要验证码,但是 SSL 加密时(端口465/587),总是会出现各种错误,不用 SSL 加密(端口25)就可以正常发送 Session session = Session.getInstance(properties);// 与邮件服务器连接会话 // 步骤二:创建Message MimeMessage message = new MimeMessage(session); // 设置邮件头(简单邮件和复杂邮件相同 try {message.setFrom(new InternetAddress(account_number, "审图协同系统", "UTF-8")); // 发件人 加个昵称 //message.setRecipients(Message.RecipientType.TO, "");message.setRecipient(Message.RecipientType.TO, new InternetAddress(addressee, "人员", "UTF-8")); // 收件人 价格昵称 message.setSubject("审图", "UTF-8"); // 邮件主题 MimeMultipart mimeMultipart = new MimeMultipart();if(enclosure.size()>0){for(int i = 0;i<enclosure.size();i++){System.out.println(enclosure.get(i));// 设置邮件体 MimeBodyPart attachment = new MimeBodyPart();// 将所有 BodyPart 组合起来变为 Multipart // 将最后合成的 MultiPart 交给 MimeMessage 对象 attachment.setDataHandler(new DataHandler(new FileDataSource(enclosure.get(i))));// 将附件数据添加到“节点” (链接数据文件) // 因中文附件名编码的问题,会产生乱码,必须使用 JavaMail 提供的工具类 MimeUtility 来包装中文字符 // 设置 filename 可自动生成: Content-Disposition:attachment;filename=xxx String name = enclosure.get(i); attachment.setFileName(MimeUtility.encodeText(name.substring(19))); // 可以防止 出现 文件类型变bin类型 mimeMultipart.addBodyPart(attachment);}} // htmlSystem.out.println("HTML_content>>>"+HTML_content); MimeBodyPart content = new MimeBodyPart(); content.setContent(HTML_content, "text/html;charset=utf-8"); mimeMultipart.addBodyPart(content); mimeMultipart.setSubType("mixed"); // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容) message.setContent(mimeMultipart); message.setSentDate(new Date()); // 设置发件时间 message.saveChanges();// 保存设置 Transport transport = session.getTransport();// 4. 根据 Session 获取邮件传输对象 transport.connect(Email_server_address,account_number, password); // 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人 transport.sendMessage(message, message.getAllRecipients()); transport.close();// 关闭连接} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
public static void main(String[] args) {// TODO Auto-generated method stub//ComplexMail complexMail =new ComplexMail();//complexMail.Understanding_email(toMailList.get(0).get("BY5").toString(), mailbox, AnnexDetailsList); // 收件人地址,html,附件 }
}
java meil的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- ajax 中文参数乱码问题不一定是编码格式问题。
代码要修改用户的信息,写了三个ajax,第一个写完测试没有问题,后面俩逻辑一样的就直接复制粘贴了.到第二个ajax测试的时候发现中文会乱码 如下 $.ajax({//中文参数乱码 url: '/edi ...
- (Java)面向对象的三大特征
封装.继承与多态 封装 封装的作用(好处) 提高程序安全性,保护数据 隐藏代码的实现细节 统一接口 增加系统可维护性 属性私有(关键字private) 加上Private可使该属性私有于一个类,在其他 ...
- css超出隐藏显示省略号怎么设置?
当我们在进行网页前端开发的时候,一般获取文章标题,然后一行一行的显示.但是当标题过长的时候,就会造成换行显示.还有显示部分文本信息时,如果全部显示就过于繁琐,会带来不会的网页体验感.虽然我们可以使用o ...
- Linux tomcat 部署war包
将打包好的 war包放在 webapps的文件夹下 在tomcat/conf 文件夹下的 server.xml 里填加 <Context path="" docBase=&q ...
- IP包头结构
版本号(Version): 长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6) IP包头长度(Header Length): 长度4比特.这个字段的作用是 ...
- 【UE4 C++】 射线检测 LineTrace 及 BoxTrace、SphereTrace、CapsuleTrace API
World.h 库里的 Trace API Trace模式 TraceSingle 单个结果 TraceMulti 多个结果 Trace 的检测依据 ByChanne ByObjectType ByP ...
- 学了ES6,还不会Promise的链式调用?🧐
前言 本文主要讲解promise的链式调用的方法及其最终方案 应用场景 假如开发有个需求是先要请求到第一个数据,然后根据第一个数据再去请求第二个数据,再根据第二个数据去请求第三个数据...一直到最后得 ...
- SpringCloud微服务实战——搭建企业级开发框架(七):自定义通用响应消息及统一异常处理
平时开发过程中,无可避免我们需要处理各类异常,所以这里我们在公共模块中自定义统一异常,Spring Boot 提供 @RestControllerAdvice 注解统一异常处理,我们在GitEgg ...
- [no code][scrum meeting] Beta 2
例会时间:5月14日11:30,主持者:乔玺华 下次例会时间:5月15日11:30,主持者:肖思炀 一.工作汇报 人员 昨日完成任务 明日要完成的任务 乔玺华 - 开issue,分配时间 黎正宇 - ...
- BUAA 2020 软件工程 提问回顾与个人总结
BUAA 2020 软件工程 提问回顾与个人总结 Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾 ...