1

我有一个 SAP HCI 场景,最后我发送了一封附有 XML 响应的电子邮件。尽管文件大小为 20kb 并且只有一个接收器,但我收到此错误。

com.sun.mail.smtp.SMTPSendFailedException: 552 5.3.4 标头大小超过固定的最大大小

4

1 回答 1

1

好的,我明白了:

CPI-PI SMTP 适配器配置

它是特定于 SMTP 适配器通道的配置。按照设计,开发人员必须选择附件和标题的来源,这是唯一不错的选择(不是属性,这很遗憾)。

CPI 消息的所有标头都传输到 SMTP(对我来说设计不好),因此您的限制是由于指定的附件或任何其他标头而发生的。

为了证明我的假设,我创建了两个标题:长度较小的 aa 和长文本的 ab:

msg.setHeader('aa', "<?xml version='1.0'?><root>" + "a"*256 + "</root>")
msg.setHeader('ab', "<?xml version='1.0'?><root>" + "a"*1024*30 + "</root>")

然后,我将消息发布到云内部 SMTP,并收到退回消息:

This message was created automatically by the SMTP relay on XXXXXXXXXXXXXXXX.

A message that you sent could not be delivered to all of its recipients.
The following address(es) failed:

  ilya.kuznetsov@domain
    SMTP error from remote mail server after MAIL FROM:<ilya.kuznetsov@domain> SIZE=4019:
    host XXXXXXXXXXXX [1.1.1.1]: 550 Administrative prohibition 2017-11-03-121-56439fc44a7dc0b43c28074ed7efe877

------ This is a copy of the message, including all the headers. ------

Return-path: <ilya.kuznetsov@domain>
...
Date: Fri, 3 Nov 2017 12:00:20 +0000 (UTC)
From: ilya.kuznetsov@domain
To: ilya.kuznetsov@domain
Subject: Hello world 2017-11-03T12:00:19.019Z
MIME-Version: 1.0
Content-Type: multipart/mixed; 
    boundary="----=_Part_69_482225443.1509710419985"
aa: <?xml version='1.0'?><root>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</root>
ab: <?xml version='1.0'?><root>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</root>
SAP_MessageProcessingLogID: AFn8WlOMHKwYXS0KJbCcva0BG9Wh
SAP_MplCorrelationId: AFn8WlOmx_9yZFXocsPbBYIjesC9
SAP_PregeneratedMplId: AFn8WlPK-r5wMnCqVPDM-nHhsvmo
scriptFile: stackoverflow_47077818.groovy
scriptFileType: groovy

------=_Part_69_482225443.1509710419985
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hello world body
------=_Part_69_482225443.1509710419985
Content-Type: application/xml; name=aa
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=aa

<?xml version='1.0'?><root>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</root>
------=_Part_69_482225443.1509710419985--

因此,如您所见,未用于信件的不相关标头在 SMTP 会话期间传输,它们可能是您的错误的原因。

更好的方法是使用简单的 Groovy 脚本和纯 Javamail 代码。

于 2017-11-03T12:12:36.877 回答