JavaMail发送邮件基本流程的个人笔记

目录

一、给单人发送单一邮件

1、创建Session对象:

(1)、确定邮箱账号和授权密码。

(2)、加载SMTP服务器连接信息

(3)、创建会话

2、创建邮件对象

(1)、关键类:MimeMessage

(2)、通过邮件对象添加发件地址、收件地址等信息并发送邮件

二、给多个人发送/抄送/群发

三、发送带有附件的邮件

SMTP协议:应用层中的一种协议,在JavaMail中用来发邮件的一种协议,其基于传输层上的TCP协议。

使用Java代码进行邮件的发送的步骤:

一、给单人发送单一邮件

1、创建Session对象:

(1)、确定邮箱账号和授权密码。

授权密码获取方式如下:

首先点击设置中的

然后开启服务:

最后通过扫码发送短信即可获取到授权密码。

(2)、加载SMTP服务器连接信息

以键值对的方式将邮箱主机名、端口号等信息放入到properties对象当中(利用properties对象的put()方法)

Properties pro = new Properties();//创建properties对象

pro.put("mail.smtp.host", "smtp.163.com");//添加主机名

pro.put("mail.smtp.port", "25");//添加端口号

pro.put("mail.smtp.auth", "true");//是否需要用户认证

pro.put("mail.smtp.starttls.enable", "true");//启用TLS加密

(3)、创建会话

Session session = Session.getInstance(A,B);//通过Session的getInstance()

 A:代表properties对象(连接信息)               

B:需要传入Authenticator类型的对象,而Authenticator是一个抽象类,此抽象类用于数据校验(校验邮箱账号和授权密码),通过new Authenticator()的方式,在其中重写getPasswordAuthentication()方法,返回校验结果。

eg:

Session session = Session.getInstance(pro,new Authenticator() {
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
                   //username代表邮箱账号   password代表授权密码
				return new PasswordAuthentication(username,password);
			}
		});

2、创建邮件对象

(1)、关键类:MimeMessage

MimeMessage message = new MimeMessage(session);//创建邮件对象

(2)、通过邮件对象添加发件地址、收件地址等信息并发送邮件

示例代码如下:

            message.setSubject("岩王帝君来电");//设置邮件标题
			message.setText("亲爱的旅行者你好");//设置邮件正文内容
			message.setFrom(new InternetAddress("12345678@163.com"));//设置邮件发件人
			message.setRecipient(RecipientType.TO, new InternetAddress("2234@qq.com"));//设置邮件收件人


			Transport.send(message);//发送邮件

 RecipientType.TO  代表发送收件人是单个收件人。RecipientType.CC:代表抄送

setFrom(A)==>A要求是Address类型的参数,而普通的"12345678@163.com"只是一个普通的字符串,所以要new InternetAddress()

二、给多个人发送/抄送/群发

抄送邮件与单发邮件相比,创建Session对象思路代码均一致,在创建邮件对象的过程中,只需要更改设置收件人邮箱账号的代码,示例如下:

message.setRecipient(RecipientType.TO, new InternetAddress("2522222@qq.com"));

将上述代码更改为:

message.setRecipients(RecipientType.CC, new InternetAddress[] { });

更改后的代码,设置收件人信息时,将TO(单个发送)改为CC(抄送),具体地址为数组中的每一个元素。

三、发送带有附件的邮件

带有附件的邮件在Java代码中,创建Session对象和会话的流程基本不变,在设置邮件内容时,将邮件内容分为了正文和附件两部分,而我们需要自行在代码中添加正文以及附件的内容,而这两部分部分内容在代码中都通过BdoyPart抽象类封装成对象,下面将正文和附件的内容设置分开介绍:

1、正文部分

注:设置邮件标题仍使用MimeMessage邮件对象设置(.setSubject(邮件标题))

正文内容如下代码所示:

            //正文
			BodyPart bodyPart = new MimeBodyPart();
			bodyPart.setContent("邮件正文内容","text/html;charset=utf-8");//需编码集

2、附件部分

首先创建BodyPart对象,使用此对象设置文件的名字。

SetDataHandler(A)方法读取你要发送的文件。参数A要求传入DataHandler类型参数,而DataHandler(B),参数B要求传入byte[],所以最里面调用Files工具类的readAllBytes()方法。

BodyPart body = new MimeBodyPart();
body.setFileName("小舞.png");
body.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get("XXX")),"application/octet-stream")));

3、最后用Multpart(抽象类)对象,用其子类MimeMultipart创建,将正文及附件放入此对象中:

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(bodyPart);
multipart.addBodyPart(body);

四、发送内嵌图片的邮件

带有内嵌图片的邮件,只需要附件部分的最后设置一个ID能够让正文部分调用即可。示例代码:

正文部分:

stringBuilder.append("<img src=\"cid:xw\"/>");

附件部分:

body.setHeader("Content-ID", "xw");

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值