国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Javamail使用過程中常見問題解決方案

Javamail使用過程中常見問題解決方案

2020-08-05 23:36奧蘭王子 Java教程

這篇文章主要介紹了Javamail使用過程中常見問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

今天在研究javamail發(fā)信的過程中,出現(xiàn)了一些小問題,現(xiàn)總結如下,以免后來者走些不必要的彎路,先把完整的能夠正常運行的代碼示例粘貼如下:

發(fā)郵件源代碼:

?
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
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
 
public class MailExample {
 
 public static void main (String args[]) throws Exception {
   
  String host = "smtp.163.com"//發(fā)件人使用發(fā)郵件的電子信箱服務器
  String from = "你自己的電子信箱"//發(fā)郵件的出發(fā)地(發(fā)件人的信箱)
  String to = "收件人信箱"//發(fā)郵件的目的地(收件人信箱)
 
  // Get system properties
  Properties props = System.getProperties();
 
  // Setup mail server
  props.put("mail.smtp.host", host);
 
  // Get session
  props.put("mail.smtp.auth", "true"); //這樣才能通過驗證
 
  MyAuthenticator myauth = new MyAuthenticator("你自己的電子信箱", "你自己的信箱密碼");
  Session session = Session.getDefaultInstance(props, myauth);
 
  //session.setDebug(true);
 
  // Define message
  MimeMessage message = new MimeMessage(session);
   
 
  // Set the from address
  message.setFrom(new InternetAddress(from));
 
  // Set the to address
  message.addRecipient(Message.RecipientType.TO,
   new InternetAddress(to));
 
  // Set the subject
  message.setSubject("測試程序!");
 
  // Set the content
  message.setText("這是用java寫的發(fā)送電子郵件的測試程序!");
  message.saveChanges();
   Transport.send(message);
 }
}

校驗發(fā)信人權限的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import javax.mail.PasswordAuthentication;
 
class MyAuthenticator
   extends javax.mail.Authenticator {
  private String strUser;
  private String strPwd;
  public MyAuthenticator(String user, String password) {
   this.strUser = user;
   this.strPwd = password;
  }
 
  protected PasswordAuthentication getPasswordAuthentication() {
   return new PasswordAuthentication(strUser, strPwd);
  }
 }

注意:上面的事例僅為使用163信箱時發(fā)送電子郵件的方法,因為使用的host為:smtp.163.com,如源代碼中:String host = "smtp.163.com"; //發(fā)件人使用發(fā)郵件的電子信箱服務器,如果使用其它的電子郵件發(fā)送,就必須在其郵件服務器上查找相應的電子郵件服務器,例如搜狐就要使用smtp.sohu.com,具體情況具體對待,都可以從所使用的郵件服務器上獲得的。如果沒有使用host ,也就是說,沒有進行props.put("mail.smtp.host", host);設置,那么就會拋javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;的異常。當然了,如果你沒有正確配置,這個異常仍然會被拋出的。

有些郵件服務系統(tǒng)是不需要驗證發(fā)件人的授權的,所以可以很簡單的使用

Session session = Session.getDefaultInstance(props, null);
// 而不必使用
props.put("mail.smtp.auth", "true");
MyAuthenticator myauth = new MyAuthenticator("你自己的電子信箱", "你自己的信箱密碼");
Session session = Session.getDefaultInstance(props, myauth);

就可以發(fā)送電子郵件了,這個多為一些企事業(yè)單位的內部電子信箱系統(tǒng)。

但是對于很多門戶網(wǎng)站上的電郵系統(tǒng),如:163,sohu,yahoo等等,如果仍然簡單的這樣使用就會拋

com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required,smtp8,wKjADxuAyCAfmnZE8BwtIA==.32705S2
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)

這樣的異常,要求你必須進行授權校驗,它的目的就是阻止他人任意亂發(fā)郵件,也算是為了減少垃圾郵件的出現(xiàn)吧。這時候,我們就要使用

props.put("mail.smtp.auth", "true");
MyAuthenticator myauth = new MyAuthenticator("你自己的電子信箱", "你自己的信箱密碼");
Session session = Session.getDefaultInstance(props, myauth);

這里還有一個特別注意的事情:在你使用Session.getDefaultInstance時,一定要將 props.put("mail.smtp.auth", "true"); 置為true,它默認的是false,如果你沒有做這一步,雖然你使用了Session.getDefaultInstance(props, myauth);,你自己也確實 MyAuthenticator myauth = new MyAuthenticator("你自己的電子信箱", "你自己的信箱密碼");但是它仍然會拋出

com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required,smtp8,wKjADxJA2SBrm3ZEFv0gIA==.40815S2

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)

這樣的異常。我就在這一步費了好長時間,后來才發(fā)現(xiàn)了這個問題,很是郁悶。不過還好,總算解決了。

其實上面的做法只是比較簡單的一種,也有很多其它的寫法,如:

Properties props = System.getProperties();可以使用
Properties props = new Properties();來代替。

Transport.send(message);可以使用下面的代碼來代替
String username = "你的電子信箱用戶名";
String password = "你的電子信箱密碼";
message.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
transport.connect("mail.htf.com.cn", username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();

這種方法在同時發(fā)送多封電子郵件時比較有用。

還有一些具體的相關概念,可以查看相關的官方文檔,在我查詢資料時,發(fā)現(xiàn)了一篇文章寫得相當仔細,可以加以參考:另附上使用org.apache.commons.mail進行發(fā)電子郵件的示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import org.apache.commons.mail.SimpleEmail;
import org.apache.commons.mail.*;
 
public class TestCommon {
  public TestCommon() {
  }
 
  public static void main(String[] args) {
    SimpleEmail email = new SimpleEmail();
    email.setHostName("smtp.163.com");//設置使用發(fā)電子郵件的郵件服務器
    try {
      email.addTo("收件人信箱");
      email.setAuthentication("發(fā)件人信箱", "發(fā)件人信箱密碼");
      email.setFrom("發(fā)件人信箱");
      email.setSubject("Test apache.commons.mail message");
      email.setMsg("This is a simple test of commons-email");
      email.send();
    } catch (EmailException ex) {
      ex.printStackTrace();
    }
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/wzihan/p/13049096.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品久久久久久久久久新婚 | 一级一片免费视频 | 欧美一级视频在线观看 | 日韩精品极品视频在线观看免费 | 国产免费天天看高清影视在线 | 国产黄色美女 | 国产精品美女久久久久av麻豆 | 久久综合久久久 | 国产精品密在线观看 | 久久久久综合 | 伊人网站 | 91资源在线观看 | 欧美精品乱码久久久久久按摩 | 日韩在线视频播放 | 国产精品久久久久久久久久久免费看 | 亚洲午夜视频在线观看 | 香蕉福利视频 | 国产99在线| 日韩欧美国产精品 | 免费毛片在线 | 国产午夜视频在线观看 | 国产日韩欧美高清 | 欧美高清一区 | 青青久久av北条麻妃黑人 | 亚洲电影在线观看 | 欧美日韩国产一区二区三区不卡 | 中文字幕av一区 | 亚洲第一视频网站 | 精品乱码一区二区三四区 | 午夜精品影院 | 在线视频91 | 日韩国伦理久久一区 | 欧美一区二区三区在线视频 | 日本久久精品视频 | 亚洲精品第一页 | 日韩成人在线观看 | 国产一区二区三区免费看 | 欧美日韩激情一区二区三区 | 透逼视频 | 一级毛片免费完整视频 | a级在线免费视频 |