phpemail-attachmentsphpword

Send PhpWord file as email attachment


What is the correct way to generate an email attachment with PhpWord? I tried multiple ways but I get a corrupt file with size 1kb. If I trigger a download of the file instead, the file is OK.

$fileName = 'file.docx';
$fileAttachment = tempnam(sys_get_temp_dir(), 'PHPWord');
$template->saveAs($fileAttachment);
$contentType = "application/octet-stream";

$notification
    ->setTemplate("template", $templateParams)
    ->setSubject($this->_("Email subject"))
    ->addRecipient("to", $email, $email)
    ->addAttachment($fileName, $fileAttachment, $contentType);

What am I doing wrong? Thank you!


Solution

  • You could try to use file_get_contents function to read the contents of the file and then pass it as the second parameter to the addAttachment() method:

    $fileAttachmentContent = file_get_contents($fileAttachment);
    $notification
        ->setTemplate("template", $templateParams)
        ->setSubject($this->_("Email subject"))
        ->addRecipient("to", $email, $email)
        ->addAttachment($fileName, $fileAttachmentContent, $contentType);