JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » EJB / 其它Java EE 討論區 » JavaMail  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 使用 JAVA 的 API 寫發信程式有 1/1000 機率會發出空白信
gogojapan





發文: 2
積分: 0
於 2014-11-05 08:08 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如標題...
那這樣會是

1. 程式有問題?
2. API 有問題?
3. 信件內容有問題?
4. mail server 有問題?
5. 網路環境有問題?
6. 防毒軟體掃描信件有問題?
7. 收件人有問題?

因為發出去信件的信件原始標頭檔內容,正常只會有一個信件內容結束符號「--frontier--」,
如果有兩個信件內容結束符號「--frontier--」,
那顯示信件就會提早結束,真正的信件內容還沒有出現,就變成空白信。

1. 正常從 API 組信發出去的正常信為

boundary="frontier"

Content-Type: text/plain

This is the body of the message.

--frontier

Content-Type: application/octet-stream

Content-Transfer-Encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==

--frontier--

2. 異常從 API 組信發出去的空白信為

boundary="frontier"

Content-Type: text/plain

This is the body of the message.

--frontier

Content-Type: application/octet-stream

Content-Transfer-Encoding: base64

--frontier--

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==

--frontier--

● 持續兩個月觀察,每天發出1000封信...
譬如此封信有發出 A 空白信,於是再重新發送一次一樣 A 的內容,就成功!
當然也有出現過,發出 B 空白信,於是再重新發送一次一樣 B 的內容,還是失敗(空白信),
要重新發送到第三次才成功,或者第五次...
難道是發送出去的時間點?一天有很多時段會有問題。

●有趣就是在...
一樣的信件內容、一樣的程式,
大部分都可以發信成功顯示內容,只有幾隻漏網之魚是發信失敗顯示空白,
然後再把漏網之魚重新發信出去,就可以發信成功顯示內容...
大部分的漏網之魚都可以第二次發信就可以發信成功顯示內容...
少部分的漏網之魚則是要第三、四、五次以上發信才可以發信成功顯示內容...


reply to postreply to post
作者 Re:使用 JAVA 的 API 寫發信程式有 1/1000 機率會發出空白信 [Re:gogojapan]
qrtt1





發文: 1748
積分: 31
於 2014-11-05 09:32 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
那你有再往上一層,觀察一下產生信件「內容」的程式嗎@@?

reply to postreply to post
蝸牛角上爭何事?石火光中寄此身,隨富隨貧且歡樂,不開口笑是癡人。
my notes
作者 Re:使用 JAVA 的 API 寫發信程式有 1/1000 機率會發出空白信 [Re:qrtt1]
gogojapan





發文: 2
積分: 0
於 2014-11-05 10:07 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
可是正常的信件內容,跟有問題(顯示空白)的信件內容,只有差幾行字耶...

● 假設正常的信件內容是

第一行標題:A123
第二行標題:B456
第三行標題:C789

● 而有問題(顯示空白)的信件內容是

第一行標題:D456
第二行標題:E789
第三行標題:F123

● 以下為觀察一下產生信件「內容」的程式

private MimeMessage message = null;
private static Session _mailSession = null;

Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.from", mailSmtpFrom);
props.put("mail.mime.multipart.ignoremissingendboundary", "false");
props.put("mail.mime.multipart.ignoremissingboundaryparameter", "false");
_mailSession = Session.getInstance(props, null);

for(每一封信){

BodyPart messageBodyPart = new MimeBodyPart();
BodyPart messageBodyPart1 = new MimeBodyPart();
BodyPart messageBodyPart2 = new MimeBodyPart();
BodyPart messageBodyPart3 = new MimeBodyPart();
BodyPart messageBodyPart = new MimeBodyPart();

messageBodyPart3 = new MimeBodyPart();
messageBodyPart3.setContent(文字);
multipart.addBodyPart(messageBodyPart3);

messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(圖片1);
messageBodyPart.setHeader(ggg);
multipart.addBodyPart(messageBodyPart);

messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setDataHandler(圖片2);
messageBodyPart1.setHeader(ddd);
multipart.addBodyPart(messageBodyPart1);

messageBodyPart2 = new MimeBodyPart();
messageBodyPart2.setDataHandler(圖片3);
messageBodyPart2.setHeader(bbb);
multipart.addBodyPart(messageBodyPart2);

message.setContent(multipart);
Transport.send(message);

}


reply to postreply to post
» JWorld@TW »  EJB / 其它Java EE 討論區 » JavaMail

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8