服务器之家

服务器之家 > 正文

Java发送邮件javax.mail的实现方法

时间:2020-03-24 13:25     来源/作者:lijiao

直接上源码:
1. 邮件的基本信息(方便就直接设置为静态了)
下面最好是做为一个javabean

?
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
package com.lgf.Email;
 
import java.util.Date;
 
public class EmailMessage 
{
  /**
   * 邮件的信息,可以自己进行设置。
   * 为了方便直接全部设置为静态
   */
   
// 收件人邮箱
  public static String TO = "xxx@xxx.com";  
// 发件人邮箱
  public static String FROM = "xxx@xxx.com"
  public static String FROM_NAME = "xxx"
//  抄送人  
  public static String CC="xxx@nxxx.com";  
//  暗送人
  public static String BCC="xxx@nxxx.com";    
// 邮件的类型
  public static String Email_Content = "text/plain";
// 邮件标题
  public static String Email_Subject = "Test Email With JavaMail";  
// 邮件头
  public static String Email_Header = "This Is Email Header";  
// 内容
  public static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>"
// 服务器 比如QQ的可以设置为smtp.qq.com
  public static String Email_Host = "smtp.xxx.com";     
// 发送时间
  public static Date sendDate = new Date(); 
// 是否需要验证用户名和密码
  public static boolean validate = true;   
}
 

2. 服务器验证(就是一般登入时候的用户名和密码)

?
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
package com.lgf.Email;
 
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
 
/**
 * 用户名和密码的验证
 * @author lgf
 *
 */
public class MailAuthenticator extends Authenticator{
  private String username="xxxxx";  
  private String password="xxxxx";  
   
  public MailAuthenticator() {
    super();
  }
   
  /**
   * 设置验证的用户名和密码
   */
  public MailAuthenticator(String userName , String password) {
    super();
    this.username = userName;
    this.password = password;
  }
  protected PasswordAuthentication getPasswordAuthentication()
  {  
    return new PasswordAuthentication(this.username,this.password);  
  }  
}

 3. 发送邮件前设置信息和步骤

?
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
package com.lgf.Email;
 
import java.util.Properties;
 
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
 
import com.lgf.SendEmail.MailAuthenticator;
 
public class SendEmail 
{
   
  /** 
  * 发送普通邮件 
  * @throws Exception 
  */  
  public void doSendNormalMail() 
  {  
//    获取系统环境 
    Properties prop = new Properties(); 
    Authenticator auth = null;
//   判断发送邮件是否需要验证
    if (EmailMessage.validate) 
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator(); 
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);  
    prop.put("mail.smtp.auth", "true");  
     
//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);  
//   在控制台显示Debug信息
    session.setDebug(true);
//   设置邮件对象
    Message message = new MimeMessage(session);  
    try
    {  
//      设置邮件主题 
      message.setSubject(EmailMessage.Email_Subject);  
//      设置邮件标题  
      message.setHeader("Header", EmailMessage.Email_Header); 
//      设置发送时间  
      message.setSentDate(EmailMessage.sendDate);
       
//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);  
//     把发件人信息添加到信息中
      message.setFrom(address);  
       
//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO); 
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);  
      
//     设置多个收件人地址  
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));  
 
//      设置邮件格式
      message.setContent("Content", EmailMessage.Email_Content); 
//      设置邮件内容  必须在设置文件格式后面
      message.setText(EmailMessage.Email_Body); 
       
//     保存上面添加的信息
      message.saveChanges();  
//      发送邮件 
      System.out.println("sendNormalEmail() 开始发送邮件……");  
      Transport.send(message);  
      System.out.println("发送成功!");  
    } catch (Exception e)
    {  
        System.out.println("出错");  
        e.printStackTrace();  
    }  
  }  
   
  /**
   * 发送HTML格式的邮件
   */
  public void doSendHtmlMail() 
  {  
//    获取系统环境 
    Properties prop = new Properties(); 
 
    Authenticator auth = null;
    if (EmailMessage.validate)
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator();
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);  
    prop.put("mail.smtp.auth", "true");  
     
//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);  
     
//   设置邮件对象
    Message message = new MimeMessage(session);  
    try
    {  
//      设置邮件主题 
      message.setSubject(EmailMessage.Email_Subject);  
//      设置邮件标题  
      message.setHeader("Header", EmailMessage.Email_Header); 
//      设置发送时间  
      message.setSentDate(EmailMessage.sendDate);
       
//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);  
//     把发件人信息添加到信息中
      message.setFrom(address);  
       
//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO); 
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);  
      
//     设置多个收件人地址  
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));  
 
//     设置发送信息的内容  下面为发送hmml
//     设置邮件格式
      EmailMessage.Email_Content = "text/html; charset=utf-8";
      message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); 
 
//     保存上面添加的信息
      message.saveChanges();  
//      发送邮件 
      System.out.println("doSendHtmlMail() 开始发送邮件……");  
      Transport.send(message);  
      System.out.println("发送成功!");  
    } catch (Exception e)
    {  
        System.out.println("出错");  
        e.printStackTrace();  
    }  
  }  
  /**
   * 发送带有附件格式的邮件
   */
  public void doSendAttachmentMail() 
  {  
//    获取系统环境 
    Properties prop = new Properties(); 
 
    Authenticator auth = null;
    if (EmailMessage.validate)
    {
//      邮件服务器认证  用户名和密码
      auth = new MailAuthenticator();
    }
//   添加必要的信息
    prop.put("mail.smtp.host", EmailMessage.Email_Host);  
    prop.put("mail.smtp.auth", "true");  
     
//    设置对话和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(prop, auth);  
     
//   设置邮件对象
    Message message = new MimeMessage(session);  
    try
    {  
//      设置邮件主题 
      message.setSubject(EmailMessage.Email_Subject);  
//      设置邮件标题  
      message.setHeader("Header", EmailMessage.Email_Header); 
//      设置发送时间  
      message.setSentDate(EmailMessage.sendDate);
       
//      设置发信人地址 和 名字
      Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);  
//     把发件人信息添加到信息中
      message.setFrom(address);  
       
//     设置发件人地址
      Address toAddress = new InternetAddress(EmailMessage.TO); 
//      设置接收人地址
      message.setRecipient(Message.RecipientType.TO, toAddress);  
      
//     设置多个收件人地址  
//     message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));  
      
       
//     设置发送信息的内容  下面为发送附件
      message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); 
       
      BodyPart messageBodyPart = new MimeBodyPart();  
      messageBodyPart.setText("bodypart");  
       
      Multipart multipart = new MimeMultipart();  
      multipart.addBodyPart(messageBodyPart);  
       
      messageBodyPart = new MimeBodyPart();  
       
//     设置上传的资源
      DataSource source = new FileDataSource("E:\\3.doc"); 
//     添加到
      messageBodyPart.setDataHandler(new DataHandler(source));  
//     设置文件名称,记得后缀名
      messageBodyPart.setFileName("test.doc");  
      multipart.addBodyPart(messageBodyPart); 
       
      message.setContent(multipart);  
       
//     保存上面添加的信息
      message.saveChanges();  
//      发送邮件 
      System.out.println("doSendAttachmentMail() 开始发送邮件……");  
      Transport.send(message);  
      System.out.println("发送成功!");  
    } catch (Exception e)
    {  
        System.out.println("出错");  
        e.printStackTrace();  
    }  
  }  
  /**
   * @param args
   */
  public static void main(String[] args)
  {
//   new SendEmail().doSendNormalMail();
//   new SendEmail().doSendHtmlMail();
    new SendEmail().doSendAttachmentMail();
  }
 
}

以上就是Java发送邮件javax.mail的详细代码,希望对大家实现java邮件发送有所帮助。

相关文章

热门资讯

沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部