2011-10-29 7 views
4

Dans mon projet, j'utilise l'extension YiiMail pour envoyer du courrier aux utilisateurs. dans lequel je joins un fichier. mais le problème est qu'il n'est pas possible d'envoyer le mail en utilisant la pièce jointe. mon code de courrier est donné ci-dessous.YiiMail envoi pièce jointe

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

avec ce code, le courrier n'envoie pas et un message d'erreur s'affiche. Argument 1 passé à Swift_Mime_SimpleMessage :: attach() doit mettre en œuvre Swift_Mime_MimeEntity d'interface, par exemple de CUploadedFile donné

ce qui est la raison de cette erreur montre et toute solution pour cela. merci d'avance

Répondre

8

Vous devez convertir votre pièce jointe en un type SwiftMailer Swift_Mime_MimeEntity. CUploadedFile::getInstanceByName('fileupload') renvoie une classe CUploadedFile, que SwiftMailer ne sait pas gérer. Plus d'informations sur Swift attachments here.

Je n'ai pas testé, mais vous aurez besoin de faire quelque chose comme ceci:

$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 

Bonne chance!

+0

merci beaucoup .. vous m'a sauvé ... merci beaucoup mon pote. –