首页 > 编程知识 正文

java实现用阿里邮箱发邮件(java发送邮件带pdf附件)

时间:2023-05-06 10:17:28 阅读:69460 作者:3746

1 package com.feihe.util.mail; 2

3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.List; 6 import java.util.Properties; 7 import java.util.regex.Matcher; 8 import java.util.regex.Pattern; 9

10导入javax.activation.data handler; 11 import javax.activation.data source; 12 import javax.activation.filedata source; 13 import javax.mail.Address; 14 import javax.mail.authenticator; 15 import javax.mail.BodyPart; 16导入javax.mail.message; 17 import javax.mail.passwordauthentication; 18 import javax.mail.Session; 19 import javax.mail.Transport; 20 import javax.mail.internet.internetaddress; 21 import javax.mail.internet.mime body part; 22 import javax.mail.internet.mime message; 23 import javax.mail.internet.mime multipart; 24 import javax.mail.internet.mime utility; 25

26 import com.sun.mail.util.mailsslsocketfactory; 27

28 publicclassendmailtest { 29 publicstaticvoidmain (字符串[ ] args ) throwsexception(30//配置信息)

31 Properties pro=newProperties (; 32pro.put(mail.SMTP.host )、) smtp.163.com); 33pro.put('mail.SMTP.auth ',' true ' ); 34 //SSL加密

35 MailSSLSocketFactory sf=null; 36 sf=newMailSSLSocketFactory; 37 //设置为信任所有主机

38SF.settrustallhosts(true ); 39 pro.put (' mail.SMTP.SSL.enable ',' true ' ); 40 pro.put (' mail.SMTP.SSL.socket factory ',sf ); 根据邮件的会话属性构建发送41 //邮件的Session。 这里应该注意的是,用户名不能带有后缀。 否则,就是不是用户名。 还应注意,这里的密码是客户端产生的另一个专用验证码,而不是通常使用邮箱的登录密码

43邮件身份验证器0身份验证器=new邮件身份验证器0 (' 13691209103 ','客户端许可证代码'); 44会话会话=session.getinstance (pro,authenticator ); 基于45//session构建邮件信息

46消息消息消息=新mime消息(session; 47 //创建邮件发件人地址

48地址从=newinternetaddress (13691209103 @ 163.com); 设置49 //邮件消息的发送者

50message.setfrom(from ); 51 //验证收件人电子邮件地址

2 listtoaddresslist=new ArrayList (; 53 to address list.add (liurui ting @ Fei he.com); 54 string buffer buffer=new string buffer (; 55 if (! to地址列表. isempty () 56stringregex='^ ) [yqdsg][-|.]? ) [yqdsg]@[yqdsg](-[yqdsg]? ().) [a-zA-Z]{2,}$ '; 57 patternp=pattern.com pile (regex ); 58for(intI=0; i toAddressList.size (; I({59matchermatch=p.matcher ) toaddresslist.get(I ); 60if(match.matches () (61buffer.append ) toaddresslist.get ) I ); 62if (ITO地址列表. size (-1 ) {63 buffer.append ),); 64 } 65 } 67 } 68 string to address=buffer.tostring (; 69 if (! 创建toAddress.isEmpty () {70 //邮件的收件人的地址

71地址[ ] to=internetaddress.parse (to地址; 设置72 //邮件收件人的地址

73 message.set recipients (message.recipient type.to,to ); 74 //邮件主题75//message.setsubject(Java邮件测试);

76 message.setSubject ('为什么会错'); 77 //邮件容器

78 mimemultipartmimemultipart=newmimemultipart (; 设置79//html

80主体部件主体部件=newmimebodypart (; 81 //邮件内容82 //String htmlText='java邮件测试111 ';

83 String htmlText='为什么错了'; 84bodypart.setcontent(htmltext,' text/html; charset=utf-8 '; 85 mime multipart.add body part (body part; 86 //增加附件

87 listfile地址列表=new ArrayList (; 88文件地址list.add (c :\ users\ haw 2106\ desktop\ 123.jpg ' ); 文件地址列表!=null } { 90 bodypartattchpart=null; 91for(intI=0; I file地址列表. size (; I () {92 if (! file地址列表. get (I ).isEmpty ) {93 attchPart=newMimeBodyPart; 94 //附件资料来源

95数据源源=新文件数据源(文件地址列表. get (I ) ); 96 //向邮件主体添加附件数据源

97 attchpart.setdata handler (新数据处理程序) source ); 98 //将附件名称改为原始文件名

99 attchpart.set filename (mime utility.encode text (source.getname ) ); 100 mime multipart.add body part (attchpart; 101(102 ) 103 ) 104消息. setcontent ) mimemultipart; 105消息. setsentdate (新日期) ); 106 //保存邮件

107 message.saveChanges (; 108 //发送邮件

109传输. send (消息; 110(111 ) 112 ) 113

14 classmailauthenticator 0扩展身份验证器{ 115/* * 116 *用户名117 */

118隐私用户名称; 119 /**120 *密码121 */

122隐私密码; 123

124 /**125 *新实例mail authenticator.126 * 127 * @ param username 128 * @ param password 129 * /

130 publicmailauthenticator0(string username,string password (131 this.username=username; 132 this.password=password; 133 ) 134

135公共字符串获取密码((136返回密码; 137 ) 138

139 @ override 140 protectedpasswordauthenticationgetpasswordauthentication ({ 141 returnnewpasswordauthentication (用户名称1110 )

144公共字符串获取用户名称((145返回用户名称; 146 ) 147

148 publicvoidsetpassword (string password ) {149 this.password=password; 150 ) 151

152 publicvoidsetusername (string username ) {153 this.username=username; 154 ) 155

156 }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。