java mail pom_Java实现邮件发送

JavaWeb实现邮件发

1、传输协议:

SMTP协议

处理用户邮件发送的请求。

POP3协议

处理用户邮件接收请的求。

2、所需要的jar包

mail-1.4.7.jar : 点击下载

activation-1.1.1.jar : 点击下载

Pom.xml文件:

javax.mail

mail

1.4.7

javax.activation

activation

1.1.1

3、发送一封纯文本的邮件

package com.xu;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Properties;

public class sendMail01 {

//简单邮件:纯文本内容

//复杂邮件:文本+图片+附件

//要发送邮件需要获取协议,开启POP3和SMTP服务

public static void main(String[] args) throws Exception {

Properties prop = new Properties();//创建一封邮件

//以下三项的Key的值都是固定的

prop.setProperty("mail.host","smtp.qq.com");//设置邮件服务器

prop.setProperty("mail.transport.protocol","smtp");//设置邮件发送协议

prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码

//如果是QQ邮箱,还要设置SSL加密,加上以下代码即可

MailSSLSocketFactory sf = new MailSSLSocketFactory();

sf.setTrustAllHosts(true);

prop.put("mail.smtp.ssl.enable","true");

prop.put("mail.smtp.ssl.socketFactory",sf);

//==========使用JavaMail发送邮件的6个步骤======

//1、创建定义整个应用程序所需要的环境信息的Session对象

Session session = Session.getDefaultInstance(prop, new Authenticator() {

public PasswordAuthentication getPasswordAuthentication(){

//发件人邮箱的用户名和授权码(好像只有qq是授权码,其它的是密码)

return new PasswordAuthentication("1612893803@qq.com","授权码");

}

});

//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态

session.setDebug(true);

//2、通过Session得到transport对象

Transport ts = session.getTransport();

//3、使用邮箱的用户名和授权码连上邮件服务器

ts.connect("SMTP.qq.com","1612893803@qq.com","授权码");

//4、创建邮件

//创建邮件对象

MimeMessage message = new MimeMessage(session);

//指明邮件的发件人

message.setFrom(new InternetAddress("1612893803@qq.com"));

//指明邮件的收件人

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

//邮件的标题

message.setSubject("只是一个普通的纯文本邮件");

//邮件的文本内容

message.setContent("你好哇,我来了!","text/html;charset=UTF-8");

//5、发送邮件

ts.sendMessage(message,message.getAllRecipients());

//6、关闭连接

ts.close();

}

}

4、发送带图片和附件的邮件

package com.xu;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.*;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import java.util.Properties;

public class sendMail02 {

//简单邮件:纯文本内容

//复杂邮件:文本+图片+附件

/*

*MimeMessage类表示整封邮件。

*MimeBodyPart类表示邮件的一个MIME消息。

*MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

*/

//要发送邮件需要获取协议,开启POP3和SMTP服务

public static void main(String[] args) throws Exception {

Properties prop = new Properties();//创建一封邮件

//以下三项的Key的值都是固定的

prop.setProperty("mail.host","smtp.qq.com");//设置邮件服务器

prop.setProperty("mail.transport.protocol","smtp");//设置邮件发送协议

prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码

//如果是QQ邮箱,还要设置SSL加密,加上以下代码即可

MailSSLSocketFactory sf = new MailSSLSocketFactory();

sf.setTrustAllHosts(true);

prop.put("mail.smtp.ssl.enable","true");

prop.put("mail.smtp.ssl.socketFactory",sf);

//==========使用JavaMail发送邮件的6个步骤======

//变量名字定义的有点乱,不想改了。将就下吧

//1、创建定义整个应用程序所需要的环境信息的Session对象

Session session = Session.getDefaultInstance(prop, new Authenticator() {

public PasswordAuthentication getPasswordAuthentication(){

//发件人邮箱的用户名和授权码

return new PasswordAuthentication("1612893803@qq.com","授权码");

}

});

//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态

session.setDebug(true);

//2、通过Session得到transport对象

Transport ts = session.getTransport();

//3、使用邮箱的用户名和授权码连上邮件服务器

ts.connect("SMTP.qq.com","1612893803@qq.com","授权码");

//4、创建邮件

//创建邮件对象

MimeMessage message = new MimeMessage(session);

//指明邮件的发件人

message.setFrom(new InternetAddress("1612893803@qq.com"));

//指明邮件的收件人

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

//邮件的标题

message.setSubject("这是一个有文本、图片、附件的邮件");

//邮件的内容

//=================================================

//准备图片数据 DataHandler:处理除文本外的数据

MimeBodyPart image = new MimeBodyPart();

DataHandler dh = new DataHandler(new FileDataSource("C:\\Users\\Think\\Documents\\image-20200220200136289.png"));

image.setDataHandler(dh);

image.setContentID("xx.png");//设置图片ID

//ContentID用于为“multipart/related”组合消息中的内嵌资源指定一个唯一标识号,在HTML格式的正文中可以使用这个唯一标识号来引用该内嵌资源。

//注意,在引用Content-ID头字段标识的内嵌资源时,要在资源的唯一标识号前面加上“cid:”,以说明要采用唯一标识号对资源进行引用。

//准备正文数据

MimeBodyPart text = new MimeBodyPart();

text.setContent("这是一个带图片、文本、附件的邮件","text/html;charset=UTF-8");

//准备附件数据

MimeBodyPart accessory = new MimeBodyPart();

DataHandler dh2 = new DataHandler(new FileDataSource("C:\\Users\\Think\\Pictures\\Saved Pictures\\illust_70110900_20191209_012234.jpg"));

accessory.setDataHandler(dh2);

accessory.setFileName(MimeUtility.encodeText("yan"));//给附件一个名字,发过去显示的就是这个设定的名字||MimeUtility.encodeText("")解决附件发送过去乱码;

//*****************************!!!!!!!**********************

/*

MimeBodyPart:表示复杂邮件的一个组成部分,它可以表示文本,附件,图片

DataHandler:表示可以读取图片或附件

MimeMultipart:表示二个邮件组成部分的关系,文本和图片的关系是"related"关系

Content-ID:表示图片的编号

related:图片|| mixed:附件

*/

//*****************************!!!!!!!**********************

//拼接图片和文本

MimeMultipart mm = new MimeMultipart();

mm.addBodyPart(text);

mm.addBodyPart(image);

mm.setSubType("related");

//将文本+图片封装成邮件的组成部分,即将关系看作成一个部分

MimeBodyPart context = new MimeBodyPart();

context.setContent(mm);

//把附件也加上

MimeMultipart file = new MimeMultipart();

file.addBodyPart(context);

file.addBodyPart(accessory);

file.setSubType("mixed");

//放到消息中

message.setContent(file);//把编辑好的内容放入消息中

message.saveChanges();//保存修改!

//=================================================

//5、发送邮件

ts.sendMessage(message,message.getAllRecipients());//message:发送的消息||message.getAllRecipients():获取保存在里面的地址

//6、关闭连接

ts.close();

}

//对于,复杂类型的邮件,位置关系特别注意和加入的顺利要一致

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值