欢迎访问优讯网!
您当前的位置:首页 > 爱编程

java.mail实现发送邮件

时间:2020-02-12 09:55:25  来源:优讯网  作者:小卡司  浏览次数:
这篇文章主要为大家详细介绍了java.mail实现发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
 

本文实例为大家分享了java.mail实现发送邮件的具体代码,供大家参考,具体内容如下

前提条件:

需要对邮箱做出设置,开启 : 
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV等服务 
一方面是接收这些代理服务器发送的邮件 
另一方面就是让邮箱接受这些邮件协议的代理 
在登录的时候,就是用户名和授权码,进行登录 
获取授权码的过程:直接百度搜索就有结果,这里不再赘述

demo

这里需要引入javax.mail jar包


以上就是本文的全部内容,希望对大家的学习有所帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package test;
///**
// *
// * @author jingxl0327
// * @Description 邮件发送测试
// */
public class sendMailTest {
 public static void main(String[] args) throws Exception {
  // 配置信息
  Properties pro = new Properties();
  pro.put("mail.smtp.host", "smtp.163.com");
  pro.put("mail.smtp.auth", "true");
  // SSL加密
  MailSSLSocketFactory sf = null;
  sf = new MailSSLSocketFactory();
  // 设置信任所有的主机
  sf.setTrustAllHosts(true);
  pro.put("mail.smtp.ssl.enable", "true");
  pro.put("mail.smtp.ssl.socketFactory", sf);
  // 根据邮件的会话属性构造一个发送邮件的Session,这里需要注意的是用
户名那里不能加后缀,否则便不是用户名了

  //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端
生成的另一个专门的授权码

  MailAuthenticator authenticator = new MailAuthenticator("jingxl0327",
    "jing0327");
  Session session = Session.getInstance(pro, authenticator);
  // 根据Session 构建邮件信息
  Message message = new MimeMessage(session);
  // 创建邮件发送者地址
  Address from = new InternetAddress("jingxl0327@163.com");
  // 设置邮件消息的发送者
  message.setFrom(from);
  // 验证收件人邮箱地址
  List<String> toAddressList = new ArrayList<>();
  toAddressList.add("1157496573@qq.com");
  StringBuffer buffer = new StringBuffer();
  if (!toAddressList.isEmpty()) {
   String regEx = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+
(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"
;
   Pattern p = Pattern.compile(regEx);
   for (int i = 0; i < toAddressList.size(); i++) {
    Matcher match = p.matcher(toAddressList.get(i));
    if (match.matches()) {
     buffer.append(toAddressList.get(i));
     if (i < toAddressList.size() - 1) {
      buffer.append(",");
     }
    }
   }
  }
  String toAddress = buffer.toString();
  if (!toAddress.isEmpty()) {
   // 创建邮件的接收者地址
   Address[] to = InternetAddress.parse(toAddress);
   // 设置邮件接收人地址
   message.setRecipients(Message.RecipientType.TO, to);
   // 邮件主题
   message.setSubject("这个是主题");
   // 邮件容器
   MimeMultipart mimeMultiPart = new MimeMultipart();
   // 设置HTML
   BodyPart bodyPart = new MimeBodyPart();
   // 邮件内容
   String htmlText = "这个是内容";
   bodyPart.setContent(htmlText, "text/html;charset=utf-8");
   mimeMultiPart.addBodyPart(bodyPart);
   // 添加附件
   List<String> fileAddressList = new ArrayList<String>();
   fileAddressList
     .add("C:\\Users\\tuzongxun123\\Desktop\\新建 Microsoft Office Word 文档.docx");
   if (fileAddressList != null) {
    BodyPart attchPart = null;
    for (int i = 0; i < fileAddressList.size(); i++) {
     if (!fileAddressList.get(i).isEmpty()) {
      attchPart = new MimeBodyPart();
      // 附件数据源
      DataSource source = new FileDataSource(
        fileAddressList.get(i));
      // 将附件数据源添加到邮件体
      attchPart.setDataHandler(new DataHandler(source));
      // 设置附件名称为原文件名
      attchPart.setFileName(MimeUtility.encodeText(source
        .getName()));
      mimeMultiPart.addBodyPart(attchPart);
     }
    }
   }
   message.setContent(mimeMultiPart);
   message.setSentDate(new Date());
   // 保存邮件
   message.saveChanges();
   // 发送邮件
   Transport.send(message);
  }
 }
}
 
class MailAuthenticator extends Authenticator {
 
 /**
  * 用户名
  */
 private String username;
 /**
  * 密码
  */
 private String password;
 
 /**
  * 创建一个新的实例 MailAuthenticator.
  *
  * @param username
  * @param password
  */
 public MailAuthenticator(String username, String password) {
  this.username = username;
  this.password = password;
 }
 
 public String getPassword() {
  return password;
 }
 
 @Override
 protected PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication(username, password);
 }
 
 public String getUsername() {
  return username;
 }
 
 public void setPassword(String password) {
  this.password = password;
 }
 
 public void setUsername(String username) {
  this.username = username;
 }
 
}
来顶一下
返回首页
返回首页

原文链接:https://www.jb51.net/article/180138.htm


推荐资讯
如何下载旧版centos iso镜像 如何下载迷你mini版的centos镜像
如何下载旧版centos i
计算机的正确使用姿势 电脑痴如何正确的使用电脑
计算机的正确使用姿势
好用的后台管理的前端框架模版H-ui H-ui框架模版分享
好用的后台管理的前端
微信电脑多开方法 无需辅助电脑版微信双开方法分享
微信电脑多开方法 无
相关文章
栏目更新
栏目热门