E-mail Attachments

In ZF1 files could be attached to an e-mail using Zend_Mail::createAttachment() and Zend_Mail::addAttachment() methods.

In ZF2 these methods are not available anymore, so the correct way of dealing with multipart e-mails is using the Zend\Mime package.

Using Zend\Mime\Part

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Use Zend\Mime, Zend\Mail\Message;

// first create the parts
$text = new Mime\Part();
$text->type = Mime\Mime::TYPE_TEXT;
$text->charset = 'utf-8';

$fileContent = fopen($somefilePath, 'r');
$attachment = new Mime\Part($fileContent);
$attachment->type = 'image/jpg';
$attachment->filename = 'image-file-name.jpg';
$attachment->disposition = Mime\Mime::DISPOSITION_ATTACHMENT;
// Setting the encoding is recommended for binary data
$attachment->encoding = Mime\Mime::ENCODING_BASE64;

// then add them to a MIME message
$mimeMessage = new Mime\Message();
$mimeMessage->setParts(array($text, $attachment));

// and finally we create the actual email
$message = new Message();
$message->setBody($mimeMessage);

Please see Zend\Mail\Message documentation for more informations.