首先将POP3/SMTP服务调节为开启状态
然后点击 授权密码管理 区的 "新增授权密码" ,创建出一个新设备之后保存好专属密码。
导入一个javax.mail的jar包
构造出这样一个工具类,方便我们后期实例化对象
public static Session createSession() {
String password = "FQGKWTBI********";//用户密码
String username = "***********@163.com";//用户账号
Properties props =new Properties();//properties类,在Java中,其配置文件常为.properties文件,文件内容的格式是“键=值”或者“键 值”的格式。
props.put("mail.smtp.host","smtp.163.com");//主机名
props.put("mail.smtp.port","25");//主机端口号
props.put("mail.smtp.auth","true");//是否需要用户认证
props.put("mail.smtp.starttls.enable","true");//启用TLS加密
//创建Session会话
//参数1:smtp服务器连接参数
//参数2:账号和密码的授权认证对象
Session session =Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
session.setDebug(true);
return session;
}
实例化工具类的一个对象。
我们还要构造一个Message对象,然后调用Transport.send(Message)就可以发送文件了
try {
//1.创建Session对象
Session session = 工具类名.createSession();
//2.创建邮件对象
MimeMessage message =new MimeMessage(session);
message.setSubject("别害怕,这是一份测试邮件!!!");//设置邮件标题
message.setText("你好?");//设计邮件正文
message.setFrom(new InternetAddress("***********@163.com"));//发件人
message.setRecipient(Message.RecipientType.TO,
new InternetAddress("**********@qq.com"));//收件人
//3.发送邮件
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
在生活中,再发送邮件时可能会带一些附件。那如何将附件和邮件正文一同发送出去呢
try {
//1.创建Session对象
Session session = 工具类名.createSession();
//2.创建MimeMessage邮件对象
MimeMessage message =new MimeMessage(session);
message.setFrom(new InternetAddress("***********@163.com"));//发件人
message.setRecipient(Message.RecipientType.TO,new
InternetAddress("**********@qq.com"));//收件人
message.setRecipients(Message.RecipientType.CC,new InternetAddress[]{new
InternetAddress("**********@qq.com")});//多人发送,抄送邮件
message.setSubject("鸡汤邮件");//邮件标题
BodyPart textPart = new MimeBodyPart();//添加正文
textPart.setContent("用<b>脑子</b>干事算是工作,不用<b>脑子</b>的只能算是动
作。","text/html;charset=utf-8");
BodyPart filePart = new MimeBodyPart();//添加附件
filePart.setFileName("李云龙阁下");//附件文件显示名称
filePart.setDataHandler(
new DataHandler(new ByteArrayDataSource(
Files.readAllBytes(Paths.get("文件路径")),
"application/octet-stream")));//上传附件文件
//将正文+附件组装成Multipart对象
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(filePart);
message.setContent(multipart);//将mutipart对象放入邮件
//3.发送邮件
Transport.send(message);
}catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
如果我们想将图片放在正文中发送给对方可以按照下方操作进行
try {
//1.创建Session会话
Session session = 工具类名.createSession();
//2.创建MimeMessage邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("***********@163.com"));//发件人
message.setRecipient(Message.RecipientType.TO,new
InternetAddress("**********@qq.com"));//收件人
message.setRecipients(Message.RecipientType.CC,new InternetAddress[]{new
InternetAddress("3205006327@qq.com")});//多人发送,抄送邮件
message.setSubject("****");//邮件标题
//邮件正文
BodyPart textPart = new MimeBodyPart();
StringBuilder contentText = new StringBuilder();
contentText.append("<h3>**</h3>");
contentText.append("<p>****</p>");
contentText.append("<img src = \"cid:bz\"/>");
textPart.setContent(contentText.toString(),
"text/html;charset = utf-8");//邮件中包含html标签
//添加image
BodyPart imgPart = new MimeBodyPart();
imgPart.setDataHandler(new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(Paths.get("文件路径")),
" application/octet-stream")));
//设置当前图片为内嵌图片
//这个ID和HTML中引用的ID对应起来,邮件客户端就可以正常显示内嵌图片
imgPart.setHeader("Content-ID","bz");//图片的内容ID
//整合邮件
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(imgPart);
message.setContent(multipart);
//3.发送邮件
Transport.send(message);
}catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}