邮件发送
所采用的协议
发送邮件:SMTP协议
接收邮件:POP3协议
所需jar包
mail,jar 下载地址:https://mvnrepository.com/artifact/javax.mail/mail/1.4.7
activation.jar 下载地址:https://mvnrepository.com/artifact/javax.activation/activation/1.1.1
邮件发送的实现(简单邮件纯文本)
设置邮件服务器,邮件协议,验证用户名密码
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com"); //这只QQ邮箱服务器
prop.setProperty("mail.transport.protocol","smtp"); //邮件发送协议
prop.setProperty("mail.smtp.auth","true"); //验证用户名密码
关于QQ邮箱,还要设置SSL加密
//关于QQ邮箱需要设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.socketFactory",sf);
发送邮件的六个步骤:
1.创建定义整个应用程序所需的环境信息的Session对象
//1.创建定义整个应用程序所需的环境信息的Session对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("1002960106@qq.com","授权码");
}
});
//开启Session的Dubug模式,这样就可以查看程序发送Email的状态
session.setDebug(true);
2.通过Session得到Transport对象
//2.通过Session得到transport
Transport ts = session.getTransport();
3.使用邮箱的用户名和授权码连上邮件服务器
//3.使用邮件的用户名和授权码连上邮件的服务器
ts.connect("smtp.qq.com","1002960106@qq.com","授权码");
4.创建邮件
//4.创建邮件
MimeMessage message = new MimeMessage(session);
//指明发件人
message.setFrom(new InternetAddress("1002960106@qq.com"));
//指明邮件的收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1002960106@qq.com"));
//邮件的标题
message.setSubject("Good Study Day Day Up");
//邮件的文本内容
message.setContent("<h1>Java YYDS!</h1>","text/html;charset=UTF-8");
5.发送邮件
//5.发送邮件
ts.sendMessage(message,message.getAllRecipients());
6.关闭连接
//6.关闭连接
ts.close();
带图片的邮件
以上内容只需要在邮件文本内容处改变即可
//4.创建邮件
MimeMessage message = new MimeMessage(session);
//指明发件人
message.setFrom(new InternetAddress("1002960106@qq.com"));
//指明邮件的收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("1002960106@qq.com"));
//邮件的标题
message.setSubject("Good Good Study Day Day Up");
//准备图片数据
MimeBodyPart image = new MimeBodyPart();
//图片需要经过数据处理,DataHandler:数据处理
DataHandler dh = new DataHandler(new FileDataSource("D:\\代码\\java\\JavaWeb\\文件上传\\邮件发送\\src\\1.jpg"));
image.setDataHandler(dh); //在image中放入这个图片的处理数据
image.setContentID("hh.jpg"); //给图片设置一个ID,以便后面可以使用,名称不可中文
//准备正文
MimeBodyPart text = new MimeBodyPart();
text.setContent("Java YYDS!!!<img src='cid:hh.jpg'> " ,"text/html;charset=UTF-8");
//描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("mixed");
//设置到消息中,保存修改
message.setContent(mm);
message.saveChanges();
总结
邮件发送模板基本固定,若需要使用只需要设置好发件人,收件人,授权码,在文本内容处进行修改即可!