Я сохраняю файл изображения и PDF, который был загружен пользователем по одному из локальных путей. А теперь я хочу прикрепить эти файлы PDF и изображения при рассылке [Почтовое сообщение — Использование POSTMARK API]. Но это не привязанность.
Ниже приведен код, который я использую —
//Location where the file gets uploaded
$targetPath = $this->container->getParameter('upload_dir').'/Exibition/'.$fileName;
$imagePath = $this->container->getParameter('upload_dir').'/sk_booth_B17.jpg';
$message = $this->get('postmark.message');
$message->addTo($custemail);
$message->addCC($userEmail);
$message->setSubject('My Subject Goes Here');
$message->setHTMLMessage($message_body);
$message->addAttachment($targetPath);
$message->addAttachment($imagePath);
$result = $message->send();
if($result){
// Do Something
}else{
// Do Something
}
Я сделал все конфигурации правильно. Я могу отправлять обычные текстовые сообщения без каких-либо вложений.
Когда я пытался прикрепить PDF или изображение, я получаю следующую ошибку —
Исправляемая фатальная ошибка: аргумент 1, передаваемый в MZ \ PostmarkBundle \ Postmark \ Message :: addAttachment (), должен быть экземпляром Symfony \ Component \ HttpFoundation \ File \ File, заданная строка вызывается в C: \ wamp \ www \ skerp4 \ src \ Skerp \ SalesBundle \ Controller \ ExhibitionCustomerController.php в строке 558 и определяется в C: \ wamp \ www \ skerp4 \ vendor \ mlpz \ postmark-bundle \ MZ \ PostmarkBundle \ Postmark \ Message.php строка 254
Как прикрепить локально сохраненный PDF или изображения. Куда я иду не так. Как реализовать вложения. Любая помощь будет оценена.
Предполагая, что ваши вложения не превышают 10 МБ, и предполагая, что это библиотека, к которой вы обращаетесь, Вы не используете addAttachment
метод правильно, так как он принимает только Symfony File
объект.
README под этим репо заявляет это в качестве примера:
$message = $this->get('postmark.message');
$message->addTo('[email protected]', 'Test Test');
$message->setSubject('subject');
$message->setHTMLMessage('<b>email body</b>');
$message->addAttachment(new Symfony\Component\HttpFoundation\File\File(__FILE__));
$response = $message->send();
$message->addTo('[email protected]', 'Test2 Test');
$message->setSubject('subject2');
$message->setHTMLMessage('<b>email body</b>');
$message->addAttachment(new Symfony\Component\HttpFoundation\File\File(__FILE__), 'usethisfilename.php', 'text/plain');
$response = $message->send();
Конструкция Symfony\Component\HttpFoundation\File\File
принимает системный путь к файлу и соответственно генерирует правильный объект, поэтому в соответствии с этим выводом вы должны написать свой код следующим образом:
//Location where the file gets uploaded
$targetPath = $this->container->getParameter('upload_dir').'/Exibition/'.$fileName;
$imagePath = $this->container->getParameter('upload_dir').'/sk_booth_B17.jpg';
$message = $this->get('postmark.message');
$message->addTo($custemail);
$message->addCC($userEmail);
$message->setSubject('My Subject Goes Here');
$message->setHTMLMessage($message_body);
$message->addAttachment(new Symfony\Component\HttpFoundation\File\File($targetPath), $fileName, 'application/pdf');
$message->addAttachment(new Symfony\Component\HttpFoundation\File\File($imagePath), 'sk_booth_B17.jpg', 'image/jpeg');
$result = $message->send();
Других решений пока нет …