Php 给出的SwiftMailer RfcComplianceException无效ID
我正在开发一个系统,该系统在电子邮件发出之前接收电子邮件,在其中查找所有base64编码的图像,并将其作为带有内容ID(cid)的内联附件嵌入 斯威夫特梅勒不喜欢我做身份证的方式。我试过这个:Php 给出的SwiftMailer RfcComplianceException无效ID,php,email-attachments,swiftmailer,mime-message,Php,Email Attachments,Swiftmailer,Mime Message,我正在开发一个系统,该系统在电子邮件发出之前接收电子邮件,在其中查找所有base64编码的图像,并将其作为带有内容ID(cid)的内联附件嵌入 斯威夫特梅勒不喜欢我做身份证的方式。我试过这个: $attachment = new \Swift_Attachment( $image['bytes'], $image['name'], $image['type'] ); $attachment->setDisposition('inline'); $attachment->setId($
$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>
//Swift\u RfcComplianceException:给定的ID无效
显然有一种内容ID的格式?我查了一下,找不到任何拼写格式的东西。环顾四周,我认为这只是你能想出的任意一个独特的随机字符串。或者可能现在才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.'>'
);
}
}
有关更多详细信息,请查看:
/^(?:(?:[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