SwiftMailer RfcComplianceException 给出的 ID 无效
SwiftMailer RfcComplianceException Invalid ID given
我正在开发一个系统,该系统在发送电子邮件之前接收电子邮件,在其中找到所有 base64 编码的图像,并将它们作为带有内容 ID (cid) 的内联附件嵌入。
好吧 SwiftMailer 不喜欢我处理 Id 的方式。我试过这个:
$attachment = new \Swift_Attachment( $image['bytes'], $image['name'], $image['type'] );
$attachment->setDisposition('inline');
$attachment->setId($image['content_id']); // content id is dhGCSXS6bXRbBQIKl2xoXNh4
它给了我这个:
// Swift_RfcComplianceException: Invalid ID given <dhGCSXS6bXRbBQIKl2xoXNh4>
显然有一种内容 ID 格式?我查找了 RFC 2111 并没有真正找到任何拼写格式的内容。环顾四周,我认为这就是您可以想出的任何随机唯一字符串。或者也许才 4 点,我的大脑已经检查过了。
此外,我不能只使用 Swift 生成的 cid,因为该 cid 已经生成并被链中较早的另一个服务使用。
那么 cid 有有效的格式吗?
我觉得CID里应该有@符号。
更具体地说,CID 应与源中的匹配:
private function _assertValidId($id)
{
if (!preg_match(
'/^'.$this->getGrammar()->getDefinition('id-left').'@'.
$this->getGrammar()->getDefinition('id-right').'$/D',
$id
)) {
throw new Swift_RfcComplianceException(
'Invalid ID given <'.$id.'>'
);
}
}
更具体地说,CID 应匹配以下正则表达式:
/^(?:(?:[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+(\.[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+)*)|(?:"(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21\x23-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F]))*"))@(?:(?:[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+(\.[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+)*)|(?:\[(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x5A\x5E-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F]))*\]))$/D
我正在开发一个系统,该系统在发送电子邮件之前接收电子邮件,在其中找到所有 base64 编码的图像,并将它们作为带有内容 ID (cid) 的内联附件嵌入。
好吧 SwiftMailer 不喜欢我处理 Id 的方式。我试过这个:
$attachment = new \Swift_Attachment( $image['bytes'], $image['name'], $image['type'] );
$attachment->setDisposition('inline');
$attachment->setId($image['content_id']); // content id is dhGCSXS6bXRbBQIKl2xoXNh4
它给了我这个:
// Swift_RfcComplianceException: Invalid ID given <dhGCSXS6bXRbBQIKl2xoXNh4>
显然有一种内容 ID 格式?我查找了 RFC 2111 并没有真正找到任何拼写格式的内容。环顾四周,我认为这就是您可以想出的任何随机唯一字符串。或者也许才 4 点,我的大脑已经检查过了。
此外,我不能只使用 Swift 生成的 cid,因为该 cid 已经生成并被链中较早的另一个服务使用。
那么 cid 有有效的格式吗?
我觉得CID里应该有@符号。
更具体地说,CID 应与源中的匹配:
private function _assertValidId($id)
{
if (!preg_match(
'/^'.$this->getGrammar()->getDefinition('id-left').'@'.
$this->getGrammar()->getDefinition('id-right').'$/D',
$id
)) {
throw new Swift_RfcComplianceException(
'Invalid ID given <'.$id.'>'
);
}
}
更具体地说,CID 应匹配以下正则表达式:
/^(?:(?:[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+(\.[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+)*)|(?:"(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21\x23-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F]))*"))@(?:(?:[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+(\.[a-zA-Z0-9!#$%&'\*\+\-\/=\?\^_`\{\}\|~]+)*)|(?:\[(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x5A\x5E-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F]))*\]))$/D