YiiMail发送附件

时间:2011-10-29 20:12:45

标签: yii

在我的项目中,我使用YiiMail扩展程序向用户发送邮件。我附加一个文件。但问题是无法使用附件发送邮件。我的邮件代码如下。

$this->email->setBody('<p>'.$email.'-'.$name.'-'.$details.'</p>', 'text/html');
$this->email->from = "test@test.com";
$this->email->setSubject('Direct Request');
$this->email->attach(CUploadedFile::getInstanceByName('fileupload'));
$this->email->setTo(array($emailId => 'test@test.com'));

使用此代码邮件未发送并显示错误消息。 传递给Swift_Mime_SimpleMessage :: attach()的参数1必须实现接口Swift_Mime_MimeEntity,给出的CUploadedFile实例

这个错误的原因是什么,以及任何解决方案。 提前谢谢

1 个答案:

答案 0 :(得分:8)

您需要将文件附件转换为SwiftMailer Swift_Mime_MimeEntity类型。 CUploadedFile::getInstanceByName('fileupload')返回一个CUploadedFile类,SwiftMailer不知道如何处理。更多关于Swift attachments here

我没有测试过这个,但你需要做这样的事情:

$uploadedFile = CUploadedFile::getInstanceByName('fileupload'); // get the CUploadedFile
$uploadedFileName = $uploadedFile->tempName; // will be something like 'myfile.jpg'
$swiftAttachment = Swift_Attachment::fromPath($uploadedFileName); // create a Swift Attachment
$this->email->attach($swiftAttachment); // now attach the correct type
祝你好运!