Отладка исключения сообщений - PullRequest
0 голосов
/ 20 марта 2009

У нас есть пакетная программа, включающая JavaMail 1.2, которая отправляет электронные письма. В нашей среде разработки у нас нет шансов встретить вышеупомянутое исключение. Но в среде клиента они неоднократно сталкивались со следующей ошибкой:

javax.mail.MessagingException: 550 Requested action not taken: NUL characters are not allowed.
  at com.sun.mail.smtp.SMTPTransport.issueCommand (SMTPTransport.java: 879)
  at com.sun.mail.smtp.SMTPTransport.finishData (SMTPTransport.java: 820)
  at com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java: 322)
  ...

Я не уверен, связано ли это с моей проблемой, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4697158. Но, пробуя JavaMail 1.4.2, я вижу, что кодировка передачи содержимого электронной почты по-прежнему 7-битная, поэтому я не уверен, что использование JavaMail 1.4.2 может решить эту проблему. Обратите внимание, что я мог проводить тестирование только в нашей среде разработки, которая не смогла повторить это.

С вышеупомянутым исключением, как я узнаю, что это со стороны отправителя или получателя? Какие этапы отладки вы могли бы предложить?

EDIT: Вот отладка фактической отправки (замаскированная некоторая информация):

DEBUG: not loading system providers in &lt;java.home&gt;</a>/lib

DEBUG: not loading optional custom providers file: /META-INF/javamail.providers

DEBUG: successfully loaded default providers



DEBUG: Tables of loaded providers

DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}

DEBUG: Providers Listed By Protocol: {imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}

DEBUG: not loading optional address map file: /META-INF/javamail.address.map



DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]

DEBUG SMTP: useEhlo true, useAuth false



DEBUG: SMTPTransport trying to connect to host "nnn.nnn.n.nnn", port nn



DEBUG SMTP RCVD: 220 xxxx.xxxxxxxxxxx.xxx SMTP; Mon, 23 Mar 2009 15:18:57 +0800



DEBUG: SMTPTransport connected to host "nnn.nnn.n.nnn", port: nn



DEBUG SMTP SENT: EHLO xxxxxxxxx

DEBUG SMTP RCVD: 250 xxxx.xxxxxxxxxxx.xxx Hello



DEBUG SMTP: use8bit false

DEBUG SMTP SENT: MAIL FROM:<a href="newmsg.cgi?mbx=Main&to=xxxx@xxxxxxxxxxx.xxx">&lt;xxxx@xxxxxxxxxxx.xxx&gt;</a>

DEBUG SMTP RCVD: 250 <a href="newmsg.cgi?mbx=Main&to=xxxx@xxxxxxxxxxx.xxx">&lt;xxxx@xxxxxxxxxxx.xxx&gt;</a>... Sender ok



DEBUG SMTP SENT: RCPT TO:&lt;yyyyyyyy@yyyyy.yyy.yy&gt;

DEBUG SMTP RCVD: 250 &lt;yyyyyyyy@yyyyy.yyy.yy&gt;... Recipient ok



Verified Addresses

&nbsp;&nbsp;yyyyyyyy@yyyyy.yyy.yy

DEBUG SMTP SENT: DATA

DEBUG SMTP RCVD: 354 Enter mail, end with "." on a line by itself



DEBUG SMTP SENT: 

.

DEBUG SMTP RCVD: 550 Requested action not taken: NUL characters are not allowed.

1 Ответ

1 голос
/ 20 марта 2009

Вы можете попытаться включить сообщения отладки, если это не представляет угрозы для безопасности:

session.setDebug(true);

Тогда мне также было бы интересно узнать следующее: содержание письма и получателя. Если вы регистрируете их, вы можете попытаться воспроизвести поведение с вашего компьютера. Возможно, некоторые почтовые серверы отклоняют письма с символами NUL.

Редактировать: На основании отладочной информации я считаю, что, скорее всего, удаленный почтовый сервер отклоняет почту с символами NUL. Чтобы убедиться в этом, попробуйте отправить одно и то же письмо тому же получателю другими способами. Также попробуйте отправить тестовое электронное письмо тому же получателю, который не содержит символов NUL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...