YiiMail отправляет вложение - PullRequest
4 голосов
/ 30 октября 2011

В своем проекте я использую расширение 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'));

с этим кодом почта не отправляется и отображается сообщение об ошибке. Аргумент 1, передаваемый в Swift_Mime_SimpleMessage :: attach (), должен реализовывать интерфейс Swift_Mime_MimeEntity, экземпляр CUploadedFile задан

, что является причиной этой ошибки, и любое решение для этогозаранее спасибо

1 Ответ

8 голосов
/ 30 октября 2011

Вам необходимо преобразовать ваше вложение в тип SwiftMailer Swift_Mime_MimeEntity. CUploadedFile::getInstanceByName('fileupload') возвращает класс CUploadedFile , который SwiftMailer не знает, как обрабатывать. Подробнее о Swift вложений здесь .

Я не проверял это, но вам нужно будет сделать что-то вроде этого:

$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

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...