Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调试消息传递异常_Java_Debugging_Email_Smtp - Fatal编程技术网

Java 调试消息传递异常

Java 调试消息传递异常,java,debugging,email,smtp,Java,Debugging,Email,Smtp,我们有一个批处理程序,它包含了发送电子邮件的JavaMail 1.2。在我们的开发环境中,我们没有机会遇到上述异常。但在客户的环境中,他们经历了很多次这种情况,出现了以下错误跟踪: javax.mail.MessagingException: 550 Requested action not taken: NUL characters are not allowed. at com.sun.mail.smtp.SMTPTransport.issueCommand (SMTPTransport

我们有一个批处理程序,它包含了发送电子邮件的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)
  ...
我不确定这是否与我的问题有关。但是尝试JavaMail 1.4.2时,我发现电子邮件的内容传输编码仍然是7bit,所以我不确定使用JavaMail 1.4.2是否可以解决这个问题。请注意,我只能在我们的开发环境中进行测试,而我们的开发环境无法复制这一点

除了上述例外,我如何知道这是来自发送方还是接收方?您可以建议哪些调试步骤

编辑: 下面是实际发送的调试(屏蔽了一些信息):

DEBUG:不在java.home/lib中加载系统提供程序
调试:不加载可选的自定义提供程序文件:/META-INF/javamail.providers
调试:已成功加载默认提供程序
调试:加载的提供程序的表
调试:按类名列出的提供程序:{com.sun.mail.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.SMTPTransport,sun Microsystems,Inc],com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.IMAPStore,sun Microsystems,Inc],com.sun.mail.pop3.popStore=javax.mail.Provider[商店,pop3,com.sun.mail.pop3.POP3Store,sun Microsystems,Inc]]
调试:协议列出的提供程序:{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.SMTPTransport,sun Microsystems,Inc]}
调试:未加载可选地址映射文件:/META-INF/javamail.address.map
调试:getProvider()返回javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,sun Microsystems,Inc]
调试SMTP:useEhlo true,useAuth false
调试:SMTPTransport正在尝试连接到主机“nnn.nnn.n.nnn”,端口nn
调试SMTP RCVD:220 xxxx.xxxxxxxxxx.xxx SMTP;2009年3月23日星期一15:18:57+0800
调试:SMTPTransport已连接到主机“nnn.nnn.n.nnn”,端口:nn
已发送调试SMTP:EHLO xxxxxxxx
调试SMTP RCVD:250 xxxx.xxxxxxxxxx.xxx你好
调试SMTP:use8bit false
调试SMTP已发送:邮件来自:
调试SMTP RCVD:250…发件人确定
调试SMTP已发送:RCPT到:yyyyyyyy@yyyyy.yyy.yy
调试SMTP RCVD:250yyyyyyyy@yyyyy.yyy.yy...收件人ok
验证地址
yyyyyyyy@yyyyy.yyy.yy
已发送调试SMTP:数据
调试SMTP RCVD:354输入邮件,在一行上以“.”结束
已发送调试SMTP:
.
调试SMTP RCVD:550未执行请求的操作:不允许使用NUL字符。

如果不存在安全风险,您可以尝试启用调试消息:

session.setDebug(true);
然后,我还想知道以下内容:邮件的内容和收件人。如果您记录这些内容,您可以尝试从您的计算机中复制行为。可能只是一些电子邮件服务器拒绝使用NUL字符的邮件


编辑:根据调试信息,我认为远程邮件服务器很可能会拒绝包含NUL字符的邮件。为了验证这一点,请尝试使用其他方法将完全相同的邮件发送给同一收件人。此外,尝试向不包含NUL字符的同一收件人发送测试电子邮件。

我有按照你的建议做了,并用调试日志更新了我的帖子
session.setDebug(true);