使用到的jar包:
Java实现纯文本邮件发送
1 packageorg.westos.email;2
3 importcom.sun.mail.util.MailSSLSocketFactory;4
5 import javax.mail.*;6 importjavax.mail.internet.InternetAddress;7 importjavax.mail.internet.MimeMessage;8 importjava.security.GeneralSecurityException;9 importjava.util.Properties;10
11 public classSendEamil {12 public static void main(String[] args) throwsMessagingException, GeneralSecurityException {13 //创建一个配置文件并保存
14 Properties properties = newProperties();15
16 properties.setProperty(“mail.host”,”smtp.qq.com”);17
18 properties.setProperty(“mail.transport.protocol”,”smtp”);19
20 properties.setProperty(“mail.smtp.auth”,”true”);21
22
23 //QQ存在一个特性设置SSL加密
24 MailSSLSocketFactory sf = newMailSSLSocketFactory();25 sf.setTrustAllHosts(true);26 properties.put(“mail.smtp.ssl.enable”, “true”);27 properties.put(“mail.smtp.ssl.socketFactory”, sf);28
29 //创建一个session对象
30 Session session = Session.getDefaultInstance(properties, newAuthenticator() {31 @Override32 protectedPasswordAuthentication getPasswordAuthentication() {33 return new PasswordAuthentication(“619046217@qq.com”,”16位授权码”);34 }35 });36
37 //开启debug模式
38 session.setDebug(true);39
40 //获取连接对象
41 Transport transport =session.getTransport();42
43 //连接服务器
44 transport.connect(“smtp.qq.com”,”619046217@qq.com”,”16位授权码”);45
46 //创建邮件对象
47 MimeMessage mimeMessage = newMimeMessage(session);48
49 //邮件发送人
50 mimeMessage.setFrom(new InternetAddress(“619046217@qq.com”));51
52 //邮件接收人
53 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(“875203654@qq.com”));54
55 //邮件标题
56 mimeMessage.setSubject(“Hello Mail”);57
58 //邮件内容
59 mimeMessage.setContent(“我的想法是把代码放进一个循环里”,”text/html;charset=UTF-8″);60
61 //发送邮件
62 transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());63
64 //关闭连接
65 transport.close();66 }67 }
Java实现文本图片附件复杂的邮件发送
MIME(多用途互联网邮件扩展类型)
MimeBodyPart类
javax.mail.internet.MimeBodyPart类 表示的是一个MIME消息,它和MimeMessage类一样都是从Part接口继承过来。
MimeMultipart类
javax.mail.internet.MimeMultipart是抽象类 Multipart的实现子类,它用来组合多个MIME消息。一个MimeMultipart对象可以包含多个代表MIME消息的MimeBodyPart对象
1 packageorg.westos.email;2
3 importcom.sun.mail.util.MailSSLSocketFactory;4
5 importjavax.activation.DataHandler;6 importjavax.activation.FileDataSource;7 import javax.mail.*;8 import javax.mail.internet.*;9 importjava.security.GeneralSecurityException;10 importjava.util.Properties;11
12 public classSendComplexEmail {13 public static void main(String[] args) throwsGeneralSecurityException, MessagingException {14 Properties prop = newProperties();15 prop.setProperty(“mail.host”, “smtp.qq.com”); 设置QQ邮件服务器16 prop.setProperty(“mail.transport.protocol”, “smtp”); //邮件发送协议
17 prop.setProperty(“mail.smtp.auth”, “true”); //需要验证用户名密码18
19 //QQ邮箱设置SSL加密
20 MailSSLSocketFactory sf = newMailSSLSocketFactory();21 sf.setTrustAllHosts(true);22 prop.put(“mail.smtp.ssl.enable”, “true”);23 prop.put(“mail.smtp.ssl.socketFactory”, sf);24
25 //1、创建定义整个应用程序所需的环境信息的 Session 对象
26 Session session = Session.getDefaultInstance(prop, newAuthenticator() {27 @Override28 protectedPasswordAuthentication getPasswordAuthentication() {29 //传入发件人的姓名和授权码
30 return new PasswordAuthentication(“619046217@qq.com”,”16位授权码”);31 }32 });33
34 //2、通过session获取transport对象
35 Transport transport =session.getTransport();36
37 //3、通过transport对象邮箱用户名和授权码连接邮箱服务器
38 transport.connect(“smtp.qq.com”,”619046217@qq.com”,”16位授权码”);39
40 //4、创建邮件,传入session对象
41 MimeMessage mimeMessage =complexEmail(session);42
43 //5、发送邮件
44 transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());45
46 //6、关闭连接
47 transport.close();48
49
50 }51
52 public static MimeMessage complexEmail(Session session) throwsMessagingException {53 //消息的固定信息
54 MimeMessage mimeMessage = newMimeMessage(session);55
56 //发件人
57 mimeMessage.setFrom(new InternetAddress(“619046217@qq.com”));58 //收件人
59 mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(“619046217@qq.com”));60 //邮件标题
61 mimeMessage.setSubject(“带图片和附件的邮件”);62
63 //邮件内容64 //准备图片数据
65 MimeBodyPart image = newMimeBodyPart();66 DataHandler handler = new DataHandler(new FileDataSource(“E:\\IdeaProjects\\WebEmail\\resources\\测试图片.png”));67 image.setDataHandler(handler);68 image.setContentID(“test.png”); //设置图片id69
70 //准备文本
71 MimeBodyPart text = newMimeBodyPart();72 text.setContent(“这是一段文本”,”text/html;charset=utf-8″);73
74 //附件
75 MimeBodyPart appendix = newMimeBodyPart();76 appendix.setDataHandler(new DataHandler(new FileDataSource(“E:\\IdeaProjects\\WebEmail\\resources\\测试文件.txt”)));77 appendix.setFileName(“test.txt”);78
79 //拼装邮件正文
80 MimeMultipart mimeMultipart = newMimeMultipart();81 mimeMultipart.addBodyPart(image);82 mimeMultipart.addBodyPart(text);83 mimeMultipart.setSubType(“related”);//文本和图片内嵌成功84
85 //将拼装好的正文内容设置为主体
86 MimeBodyPart contentText = newMimeBodyPart();87 contentText.setContent(mimeMultipart);88
89 //拼接附件
90 MimeMultipart allFile = newMimeMultipart();91 allFile.addBodyPart(appendix);//附件
92 allFile.addBodyPart(contentText);//正文
93 allFile.setSubType(“mixed”); //正文和附件都存在邮件中,所有类型设置为mixed94
95
96 //放到Message消息中
97 mimeMessage.setContent(allFile);98 mimeMessage.saveChanges();//保存修改
99
100 returnmimeMessage;101 }102 }
QQ邮箱授权码:
QQ邮箱需获取相应的权限:
QQ邮箱–>邮箱设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 开启POP3/SMTP服务,然后获取16位授权码(注意不要将授权码泄露,一个账户可以拥有多个授权码)
今天的文章JAVA邮件发送的授权码_java实现邮件发送分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30493.html