JavaMail发送邮件

使用javax.mail可以发送普通文本文件,HTML格式的文件,同样可以发送图文并茂(包含附件)的java邮件。

发送邮件需要在验证发送的邮箱和密码:验证的帐号(本人使用163邮件)需要打开POP3/SMTP/IMAP

设置邮箱授权登录密码(已设置好):

新建java项目添加javax.mail.jar文件,并添加如下类文件:

发送邮件格式需要基本信息类:EmailMessage

package com.util.mail;import java.util.Date;/*** 发送邮件需要基本信息类*/
public class EmailMessage {//	邮件接收者public  static String TO = "15026933568@163.com";   //	邮件发送人public  static String FROM = "15026933568@163.com"; // 发送人姓名public  static String FROM_NAME = "15026933568"; //	 抄送者	public  static String CC="1298243794@qq.com";   	//	 暗送者public  static String BCC="15026933568@163.com";   	//	邮件类型public 	static String Email_Content = "text/plain";//	邮件主题public  static String Email_Subject = "Test Email With JavaMail";   //	邮件头public  static String Email_Header = "This Is Email Header";   	//	邮件内容public  static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>"; //	使用邮箱	如果使用QQ修改为smtp.qq.compublic  static String Email_Host = "smtp.163.com";   		//	邮件发送日期public 	static Date sendDate = new Date(); 	//	是否验证public 	static boolean validate = true; 	
}

  发送者邮件信息验证类:MailAuthenticator

package com.util.mail;import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;/*** 用户名和密码的验证* @author xiazhongwei**/
public class MailAuthenticator extends Authenticator{private  String username="15026933568";   private  String password="******";   public MailAuthenticator() {super();}/*** 设置验证的用户名和密码*/public MailAuthenticator(String userName , String password) {super();this.username = userName;this.password = password;}protected PasswordAuthentication getPasswordAuthentication(){   return new PasswordAuthentication(this.username,this.password);   }   
}

  发送邮件类:

package com.util.mail;import java.util.Properties;import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
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 SendEmail 
{/**  * 发送普通邮件  * @throws Exception  */   public void doSendNormalMail() {   
//		 获取系统环境  Properties prop = new Properties();  Authenticator auth = null;
//		判断发送邮件是否需要验证if (EmailMessage.validate) {
//			 邮件服务器认证   用户名和密码auth =	new MailAuthenticator();  }
//		添加必要的信息prop.put("mail.smtp.host", EmailMessage.Email_Host);   prop.put("mail.smtp.auth", "true");   //		 设置对话和邮件服务器进行通讯Session session = Session.getDefaultInstance(prop, auth);   
//		在控制台显示Debug信息session.setDebug(true);
//		设置邮件对象Message message = new MimeMessage(session);   try {   
//			 设置邮件主题 message.setSubject(EmailMessage.Email_Subject);   
//			 设置邮件标题   message.setHeader("Header", EmailMessage.Email_Header); 
//			  设置发送时间   message.setSentDate(EmailMessage.sendDate);//			 设置发信人地址  和 名字Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);   
//			把发件人信息添加到信息中message.setFrom(address);   //			设置发件人地址Address toAddress = new InternetAddress(EmailMessage.TO); 
//			 设置接收人地址message.setRecipient(Message.RecipientType.TO, toAddress);   //		 	设置多个收件人地址   
//		 	message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   //			 设置邮件格式message.setContent("Content", EmailMessage.Email_Content); 
//			 设置邮件内容    必须在设置文件格式后面message.setText(EmailMessage.Email_Body); //			保存上面添加的信息message.saveChanges();   
//			 发送邮件 System.out.println("sendNormalEmail() 开始发送邮件……");   Transport.send(message);   System.out.println("发送成功!");   } catch (Exception e) {   System.out.println("出错");   e.printStackTrace();   }   }   /*** 发送HTML格式的邮件*/public void doSendHtmlMail() {   
//		 获取系统环境  Properties prop = new Properties();  Authenticator auth = null;if (EmailMessage.validate){
//			 邮件服务器认证   用户名和密码auth = new MailAuthenticator();}
//		添加必要的信息prop.put("mail.smtp.host", EmailMessage.Email_Host);   prop.put("mail.smtp.auth", "true");   //		 设置对话和邮件服务器进行通讯Session session = Session.getDefaultInstance(prop, auth);   //		设置邮件对象Message message = new MimeMessage(session);   try {   
//			 设置邮件主题 message.setSubject(EmailMessage.Email_Subject);   
//			 设置邮件标题   message.setHeader("Header", EmailMessage.Email_Header); 
//			  设置发送时间   message.setSentDate(EmailMessage.sendDate);//			 设置发信人地址  和 名字Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);   
//			把发件人信息添加到信息中message.setFrom(address);   //			设置发件人地址Address toAddress = new InternetAddress(EmailMessage.TO); 
//			 设置接收人地址message.setRecipient(Message.RecipientType.TO, toAddress);   //		 	设置多个收件人地址   
//		 	message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   //			设置发送信息的内容   下面为发送hmml
//			设置邮件格式EmailMessage.Email_Content = "text/html; charset=utf-8";message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); //			保存上面添加的信息message.saveChanges();   
//			 发送邮件 System.out.println("doSendHtmlMail() 开始发送邮件……");   Transport.send(message);   System.out.println("发送成功!");   } catch (Exception e) {   System.out.println("出错");   e.printStackTrace();   }   }   /*** 发送带有附件格式的邮件*/public void doSendAttachmentMail() {   
//		 获取系统环境  Properties prop = new Properties();  Authenticator auth = null;if (EmailMessage.validate){
//			 邮件服务器认证   用户名和密码auth = new MailAuthenticator();}
//		添加必要的信息prop.put("mail.smtp.host", EmailMessage.Email_Host);   prop.put("mail.smtp.auth", "true");   //		 设置对话和邮件服务器进行通讯Session session = Session.getDefaultInstance(prop, auth);   //		设置邮件对象Message message = new MimeMessage(session);   try {   
//			 设置邮件主题 message.setSubject(EmailMessage.Email_Subject);   
//			 设置邮件标题   message.setHeader("Header", EmailMessage.Email_Header); 
//			  设置发送时间   message.setSentDate(EmailMessage.sendDate);//			 设置发信人地址  和 名字Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);   
//			把发件人信息添加到信息中message.setFrom(address);   //			设置发件人地址Address toAddress = new InternetAddress(EmailMessage.TO); 
//			 设置接收人地址message.setRecipient(Message.RecipientType.TO, toAddress);   //		 	设置多个收件人地址   
//		 	message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));   //			设置发送信息的内容   下面为发送附件message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); //BodyPart messageBodyPart = new MimeBodyPart();   MimeBodyPart messageBodyPart = new MimeBodyPart(); String body = "<h4>内含附件、图文并茂的邮件测试!!!</h4> </br>" + "<a href = http://haolloyin.blog.51cto.com/> 蚂蚁</a></br>" + "<img src = \"cid:logo_jpg\"></a>";MimeBodyPart image = createContent(body,"E:\\1.jpg");messageBodyPart.setText("<img src='cid:image_fairy_tail'/>");   Multipart multipart = new MimeMultipart();   //multipart.addBodyPart(messageBodyPart);   messageBodyPart = new MimeBodyPart();   //			设置上传的资源DataSource source = new FileDataSource("E:\\3.txt");  
//			添加到messageBodyPart.setDataHandler(new DataHandler(source));   
//			设置文件名称,记得后缀名messageBodyPart.setFileName("3.txt");   multipart.addBodyPart(messageBodyPart);// 5. 创建图片“节点”/*MimeBodyPart image = new MimeBodyPart();DataHandler dh = new DataHandler(new FileDataSource("E:\\1.jpg")); // 读取本地文件image.setDataHandler(dh);                   // 将图片数据添加到“节点”image.setContentID("image_fairy_tail"); */    // 为“节点”设置一个唯一编号(在文本“节点”将引用该ID)// 6. 创建文本“节点”MimeBodyPart text = new MimeBodyPart();//    这里添加图片的方式是将整个图片包含到邮件内容中, 实际上也可以以 http 链接的形式添加网络图片text.setContent("这是一张图片<br/><img src='cid:image_fairy_tail'/>", "text/html;charset=UTF-8");multipart.addBodyPart(image);multipart.addBodyPart(text);message.setContent(multipart);   //			保存上面添加的信息message.saveChanges();   
//			 发送邮件 System.out.println("doSendAttachmentMail() 开始发送邮件……");   Transport.send(message);   System.out.println("发送成功!");   } catch (Exception e){   System.out.println("出错");   e.printStackTrace();   }   } /**  * 根据传入的邮件正文body和文件路径创建图文并茂的正文部分  */ public MimeBodyPart createContent(String body, String fileName)  throws Exception {  // 用于保存最终正文部分  MimeBodyPart contentBody = new MimeBodyPart();  // 用于组合文本和图片,"related"型的MimeMultipart对象  MimeMultipart contentMulti = new MimeMultipart("related");  // 正文的文本部分  MimeBodyPart textBody = new MimeBodyPart();  textBody.setContent(body, "text/html;charset=utf-8");  contentMulti.addBodyPart(textBody);  // 正文的图片部分  MimeBodyPart jpgBody = new MimeBodyPart();  FileDataSource fds = new FileDataSource(fileName);  jpgBody.setDataHandler(new DataHandler(fds));  jpgBody.setContentID("logo_jpg");  contentMulti.addBodyPart(jpgBody);  // 将上面"related"型的 MimeMultipart 对象作为邮件的正文  contentBody.setContent(contentMulti);  return contentBody;  }}

  发送邮件入口测试函数类:

       /*** @param args*/public static void main(String[] args){//new SendEmail().doSendNormalMail();//new SendEmail().doSendHtmlMail();new SendEmail().doSendAttachmentMail();}

创建好上述内容执行发送邮件测试函数:(发送正文包含文字图片,附件)

 

源码下载地址:https://github.com/ablejava/JavaMail

转载于:https://www.cnblogs.com/ablejava/p/5784472.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cf两边黑屏怎么解决win10_关闭自动睡眠仍然睡眠?Win10过几分钟就会自动睡眠黑屏解决方法...

近期有Win10网友遇到一个奇怪的问题&#xff0c;已经设置了关闭了睡眠&#xff0c;也设置了从不关闭显示器&#xff0c;但是大概2分钟-3分钟不动鼠标或者对电脑无操作的时候&#xff0c;电脑就会出现自动睡眠黑屏的情况&#xff0c;网友根据网上的解决这个问题相关帖子进行操作…

Word如何固定页面内容在某一页开头

在写论文时经常需要新起一页从第一行写新的一章&#xff0c;那么如何固定这一页的内容是从这一页第一行开始写的呢&#xff1f; 例如需要将参考文献放在新的一页中开始写&#xff0c;那么在上一页的最后位置插入“分隔符”→“分页符”即可

西门子plm_好事连连 西门子PLM新品多项合作并举

几乎是同一时间&#xff0c;西门子PLM集中发布了多项重磅解决方案&#xff0c;并与IBM联合推出服务生命周期管理解决方案。西门子与IBM联合推出的服务生命周期管理解决方案&#xff0c;能够将实际维护和资产性能与设计决策和现场修改动态结合&#xff0c;从而优化资产的服务生命…

win10亮度怎么调_笔记本屏幕亮度怎么调

大家好&#xff0c;今天分享一篇来自装机吧官网(zhuangjiba.com)的图文教程。许多网民发现&#xff0c;当他们的计算机在办公室时&#xff0c;计算机屏幕的亮度会变暗&#xff0c;其中一些代表了计算机电量不足的问题&#xff0c;或者存在计算机没有设置亮度的问题。虽然计算机…

小程序下拉刷新_微信小程序下拉刷新

下拉刷新是常用操作&#xff0c;微信已经集成好了&#xff08;真机效果稍有瑕疵&#xff09;首先需要在.json文件启用下拉刷新{"enablePullDownRefresh": true, }然后在.js文件&#xff0c;监听下拉操作&#xff0c;处理loading和请求onPullDownRefresh() {wx.showNa…

牛津大学名誉教授Colin Blakemore:大脑是如何计算的?

智慧起航&#xff0c;共创未来【导读】9月21日&#xff0c;英国皇家学会会士、中国工程院外籍院士、香港城市大学教授、牛津大学名誉教授Colin Blakemore在第二届中国认知计算与混合智能学术大会&#xff08;CCHI2019&#xff09;作了报告——大脑是如何计算的? Colin教授的主…

表单和iframe的使用

图片热点&#xff1a; 规划出图片上的一个区域&#xff0c;可以做出超链接&#xff0c;直接点击图片区域就可以完成跳转的效果。示例&#xff1a; 网页划区&#xff1a; 在一个网页里&#xff0c;规划出一个区域用来展示另一个网页的内容。示例&#xff1a; 网页的拼接&#xf…

python计算熵

熵的计算公式&#xff1a; p(x)为概率&#xff0c;全部概率之和为1 假设 probs是网络输出的n分类预测概率&#xff0c;尺寸为[batch_size,n]&#xff0c;那么预测熵的计算代码如下&#xff1a; log_probs np.log2(probs) shang -1 * np.sum(probs * log_probs, axis1)

jq获取id的名称_查找 Linux 发行版名称、版本和内核详细信息 | Linux 中国

我这里给出了一些命令行方法来查找 Linux 系统信息。可能有很多&#xff0c;但这些方法适用于大多数 Linux 发行版。-- Sk本指南介绍了如何查找 Linux 发行版名称、版本和内核详细信息。如果你的 Linux 系统有 GUI 界面&#xff0c;那么你可以从系统设置中轻松找到这些信息。但…

报告 | 中国科学院发布地球大数据报告

地球大数据——具备海量、多源、异构、多时相、多维度、高耦合度、非平稳以及非结构化等特点&#xff0c;是深度认知地球和科学发现的新引擎&#xff0c;在促进可持续发展中可发挥重大作用。当地时间9月26日&#xff0c;在美国纽约联合国总部召开的第74届联合国大会上&#xff…

mugen4g补丁如何使用_CAD如何去除教育版戳记?

如何去除打印时出现的教育版字样&#xff1f;当我们收到甲方提供的建筑图纸时&#xff0c;尤其是设备安装类专业的CAD文件&#xff0c;很多都是教育版&#xff0c;也不知道是为啥。但是作为设计师&#xff0c;打印图纸时出现教育版戳记&#xff0c;那就显得太不专业了&#xff…

新书推荐:《追问人工智能:从剑桥到北京》

写此书的目的是为了探索&#xff1a;能计算的算计能算计的计算

Gartner公布五大新兴技术趋势 AI成主角

市场调研机构Gartner近日发布了2019年度《新兴技术的炒作周期(Hype Cycle)》研究报告&#xff0c;报告显示2019年有五大技术发展趋势十分突出&#xff0c;它们将对企业机构转型产生重要影响。这五大趋势分别是传感和移动、增强人类、后经典计算和通信、数字生态系统以及先进的人…

a12处理器和骁龙855_【性能】骁龙855最新跑分曝光 多核竟超苹果A12?

据之前消息&#xff0c;索尼将在2月24日开始的MWC 2019大展上推出新旗舰Xperia XZ4、Xperia XA3、XA3 Ultra三款新机&#xff0c;其中XZ4将采用21:9 FHD 分辨率的超窄“带鱼屏”&#xff0c;搭载骁龙855处理器&#xff0c;是主打旗舰&#xff0c;今日索尼Xperia XZ4最新跑分出炉…

word如何去掉标题前面的黑点

首先选中标题&#xff0c;点击 在弹出来的框框里取消“ 段中不分页 ”和“ 与下段同页 ” 此时黑点已经取消了

ICLR 2019八大趋势:RNN正在失去光芒,强化学习仍最受欢迎

大数据文摘出品来源&#xff1a;huyenchip编译&#xff1a;笪洁琼、周家乐ICLR 2019过去有几天了&#xff0c;作为今年上半年表现最为亮眼的人工智能顶会共收到1591篇论文&#xff0c;录取率为31.7%。为期4天的会议&#xff0c;共有8个邀请演讲主题&#xff0c;内容包括&#x…

python中赋值语句_python中赋值语句和增强赋值语句的区别

展开全部 赋值语句是2113由赋值表达式再加上分号构成的表5261达式语句。 其一般形式为&#xff1a;4102 变量表达式; 赋值语句的功能和特1653点都与赋值表达式相同。 它是程序中使用最多的语句之一。 在赋值语句的使用中需要注意以下几点&#xff1a; 1.由于在赋值符“”右边的…

word如何设置页眉横线的磅数

首先双击页眉&#xff0c;并选定横线 这样即为选中了横线 之后点击&#xff1a; 选择“边框与底纹” 之后按照下图设置即可

聚焦基础科学 引领未来发展

作者&#xff1a;姜桂兴 来源&#xff1a;光明日报当前&#xff0c;伴随着新一轮科技革命和产业变革的兴起&#xff0c;各国科技创新正在回到基础科学研究的根本问题上来。科学界意识到&#xff0c;技术创新背后的推动力是深层次的科学问题研究&#xff0c;只有聚焦基础问题研究…

word页眉的横线怎么居中

有时候word插入的页眉的横线居然不是居中&#xff0c;是偏左的&#xff08;好无语。。&#xff09; 为了解决这个问题&#xff0c;首先双击页眉&#xff0c;选中当前页眉的所有内容 点击插入对齐制表符 此时横线处于居中状态了 但这时文字不居中了。。此时只需要将文字设成左…