Swiftmailer正在为多个附件使用相同的文件

时间:2014-07-02 15:21:02

标签: yii swiftmailer

我使用yii-mail模块为Yii,它基于Swiftmailer。我试图在一封电子邮件中发送多个附件,但它似乎无法正常工作。

这是代码

 $agbpath        = 'path\\to\\file.pdf';
 $agb1path       = 'path\\to\\anotherfile.pdf';

 $message        = new YiiMailMessage;

 $message->setSubject('TEST')
 ->setFrom(array('someone@test.com' => 'Someone'))
 ->setTo(array('recipient@test.com'))
 ->setBcc(array('copy@test.com'))
 ->setBody('LoremIpsum', 'text/html')
 ;
 $message->attach(Swift_Attachment::fromPath("$agb1path"));

 $message->attach(Swift_Attachment::fromPath("$agbpath"));

 Yii::app()->mail->send($message);

两个文件都存在,但每次两个附件都包含相同的文件,但文件名不同。我尝试更改订单,这只会更改两个附件中发送的文件。

整个事情都在Windows Server 2008 R2上的Zend Server上运行。

如您所见,我甚至尝试使用硬编码值,因此表单中的错误不会对电子邮件本身产生任何影响。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这是Windows操作系统上的一个问题。 解决此问题的方法是在附加文件之前禁用缓存。

Swift_Preferences::getInstance()->setCacheType('null');

答案 1 :(得分:0)

您更有可能以这种方式调用附件:

$message->attach($agb1path);

如果您使用Yii2,则附加方法已调用Swift_Attachment::fromPath。我相信即使对于Yii1也是如此。