Java-Mail Java程序发送Email

首先我们需要拥有的是一个账号,不管是什么邮箱账号,最好是163邮箱账号(无所谓)。
      有了邮箱账号我们要做的就是去开启邮箱的第三方登录功能。在我们登陆了邮箱之后,我们要按照下图中的步骤去操作开启第三方登陆的功能。

所有的有关SMTP相关的服务都打开,这里会设置一个秘钥,类似于第三方登陆的密码,所以大家要记住这秘钥,我们在程序中会用的到这个秘钥。
      上面这些东西虽然不涉及编码,但是这是最基本的要求,要不我们编写的程序再好也无法完成通过程序发送邮件的功能。

第二部分

编码部分

我们需要导入两个jar包,一个mail.jar , 一个是activation.jar 。
网上去down这两个jar包,down不到的话私信我,发给你。
下面我们封装了一个工具类,具体代码如下 :

package com.mail.util;import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;public class MailUtils {//创建Session时需要传递的参数private static Properties prop;private static String username;private static String password;private static Properties prop1;static{InputStream in = MailUtils.class.getClassLoader().getResourceAsStream("userinfo.properties");prop1 = new Properties();try {prop1.load(in);} catch (IOException e) {e.printStackTrace();}username = prop1.getProperty("username");password = prop1.getProperty("password");prop = new Properties();//设置服务器地址属性、指向163邮箱的服务器prop.setProperty("mail.host","smtp.163.com");//将身份校验功能开启prop.setProperty("mail.smtp.auth","true");}public static Session getSession(){//内部类重写器返回用户名和密码的方法Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {//此处的username是我们的邮箱名 :  wolf1437715969//此处的passowrd是我们的我们前面提到的秘钥 , 不是该邮箱的登录面PasswordAuthentication passwordAuthentication = new PasswordAuthentication(username,password);return passwordAuthentication;}};Session session = Session.getInstance(prop, authenticator);return session;}
}

上面的userinfo.properties就类似于原生jdbc中的四大参数,但是这的话,只有登录名和第三方登录秘钥。
      发送邮件的代码如下所示 :

package com.mail.service;import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;import com.mail.util.MailUtils;public class SendMail1 {public static void main(String[] args) {Session session = MailUtils.getSession();MimeMessage msg = new MimeMessage(session);try {//这是发件人的邮箱,这个@163.com前面的号码应该和前面的properties中的信息保持一致msg.setFrom(new InternetAddress("wolf143771596@163.com"));//这是发送,就是所谓的明送,就是收件人是谁msg.setRecipients(RecipientType.TO,"143771596@qq.com");//这是添加抄送msg.setRecipients(RecipientType.CC,"wolf143771596@126.com");//这是添加暗送msg.setRecipients(RecipientType.BCC,"lilei1355@718.com");//这是邮件的标题msg.setSubject("小狼人");//这是邮件的信息和格式msg.setContent("Hello 西伯利亚狼 ,我试小狼人 ","text/html;charset=utf-8");//发送邮件Transport.send(msg);} catch (MessagingException e) {e.printStackTrace();}}
}

上图很清晰的反应了代码中的实现。

上述是发送一个文本信息,没有附件,下面我们发送一个带附件的email,看到这,你不应该继续往下看,而是去把上面的代码熟悉,敲熟,下面的只是扩展。

package com.mail.service;import java.io.File;
import java.io.IOException;import javax.mail.MessagingException;
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;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeUtility;import com.mail.util.MailUtils;public class SendMail1 {public static void main(String[] args) {Session session = MailUtils.getSession();MimeMessage msg = new MimeMessage(session);MimeMultipart parts = new MimeMultipart();MimeBodyPart part1 = new MimeBodyPart();MimeBodyPart part2 = new MimeBodyPart();MimeBodyPart part3 = new MimeBodyPart();try {//设置邮件标题msg.setSubject("发送多个文件");//第一部分,文本part1.setContent("Hello 西伯利亚狼 ,我试小狼人 ","text/html;charset=utf-8");//添加需要发送的第二个文件part2.attachFile(new File("E:/me.jpg"));//设置该文件在邮件中的附件名part2.setFileName(MimeUtility.encodeText("wolf.jpg"));//添加第三个需要发送的文件part3.attachFile(new File("E:/有多少人.mp3"));//设置该文件的在文件中附件名part3.setFileName(MimeUtility.encodeText("有多少人.mp3"));//把这三个附件放到  MimeMultipart 中parts.addBodyPart(part1);parts.addBodyPart(part2);parts.addBodyPart(part3);//设置要发送邮件的内容,三个附件msg.setContent(parts);msg.setFrom(new InternetAddress("wolf1437715969@163.com"));msg.setRecipients(RecipientType.TO,"1437715969@qq.com");Transport.send(msg);} catch (MessagingException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

多个附件发送成功。

Java-Mail Java程序发送Email相关推荐

  1. Simple Java Mail的使用,发送qq邮件

    Simple Java Mail的使用,发送qq邮件 第一步 开启SMTP服务 第二步 导入jar包 第三步 简单的使用 四 集中配置,批量发送 第一步 开启SMTP服务 打开qq邮箱,设置-账户 开 ...

  2. JMail 应用实践(一)--- 简介用Java程序发送email

    用JavaMail 发送电子邮件虽然很简单,但是对于未接触过的朋友,它还存在着一丝神秘.本文通过用一个简单的Java 应用程序发送一封电子邮件来揭开这片神秘的面纱,而对于邮件协议等等内容,这里暂不涉及 ...

  3. java邮件教程_Java发送Email/邮件

    使用Java应用程序发送邮件是很简单的,需要安装JavaMail API 和Java Activation Framework (JAF) 在机器上. 可以从Java的标准网站上下载JavaMail( ...

  4. java 微信小程序-发送模板消息

    开发前准备工作 登录微信公众平台-小程序后台,在模板消息里面设置需要发送的模板,拿到模板id. 地址: https://mp.weixin.qq.com 找到微信官方文档-小程序开发-下发小程序和公众 ...

  5. java微信小程序发送消息

    首先参考文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subsc ...

  6. java jodd 框架中发送email

    2019独角兽企业重金招聘Python工程师标准>>> 用jodd发送电子邮件: 这里用QQ和126的邮箱进行测试,首先保证你的邮箱服务器已经开通了smtp的服务,一般在设置里面,比 ...

  7. java mail 学习笔记

    JAVA MAIL 学习 笔记 电子邮件协议的简介 SMTP 简单邮件传输 SMTP是Simple Mail Transfer Protocol的简称,即简单邮件传输协议.该协议定义了邮件客户端软件和 ...

  8. Java实现QQ邮件发送

    QQ邮件发送 可以发送文本,图片,附件,同时可以将它们进行拼接发送. 功能代码被分成了4个方法,每个方法分别代表不同的发送方式,选择自己需要的方法即可. **实现发送邮件之前,先准备好QQ授权码.** ...

  9. java实现qq邮箱发送附件和图片

    生成授权码 1.进入设置账户里面,把第一个服务开启 2.点生成授权码,在代码中当成是密码 3.集成到springboot里面,引入依赖包 <dependency><groupId&g ...

  10. java mail 签名_java mail实现Email的发送,完整代码

    java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar com.sun.mail javax.mail 1.5.2 javax.mail.Session保存邮 ...

最新文章

  1. 有向图的强连通分量——Tarjan
  2. python爬虫实例-python3.7简单的爬虫实例详解
  3. 模块化加载_前端模块化简单总结
  4. 数据可视化组队学习:《Task02 - 艺术画笔见乾坤》笔记
  5. 曹大带我学 Go(9)—— 开始积累自己的工具库
  6. php比例算法,图片比例转换算法
  7. mysql转移数增删改查_MySql CURD操作(数据的增删改查)
  8. 学生成绩abcde怎样划分_7月学考成绩出来啦!
  9. python变量、运算符、要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入练习
  10. 如何使用Fastreport .将报表从 Crystal Reports 导入 FastReport .NET
  11. 安装光盘并重新启动计算机戴尔,戴尔电脑怎么设置光盘启动
  12. 苏格拉底与那个失恋的孩子
  13. linux usb摄像头设备,Linux系统下USB摄像头驱动开发
  14. 使用Qt做一个简单计算器
  15. Plant Simulation之数字孪生
  16. 数据挖掘十大算法--PageRank
  17. 中国蔬菜种子行业竞争动态与营销趋势预测报告2022-2027年
  18. 基于 Kubernetes 和 Spring Cloud 的微服务化实践
  19. Java实现微信支付之Native模式
  20. Apk反编译工具查看layout 和java源码的工具

热门文章

  1. scratch编程-小鸟飞翔
  2. 神策 FM | 桑文锋:2018,行与思
  3. java实现图片拼接
  4. 光耦合器的工作原理和作用
  5. 计算机设备管理器如何看内存,怎么查看电脑配置信息?3种方法,让你掌握电脑全部信息!...
  6. 关于计算机听课如何做笔记,如何高效地听课记录笔记
  7. lnmp 一键安装包 运行laravel 该网页无法正常运行
  8. C/C++试题集——字符串篇
  9. 计算机cpu温度显示原理,鲁大师的测温功能是怎么做到的?测温原理介绍
  10. 第十四周博客作业西北师范大学|李晓婷