Я сохраняю изображение и файл PDF, который был загружен пользователем на одном из локальных путей. И теперь я хочу прикрепить эти файлы PDF и Image при рассылке [Mailing - Using 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 или изображение, я получаю следующую ошибку:
Catchable Fatal Error: аргумент 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 или Images.Where я иду не так. Как реализовать вложения. Любая помощь будет назначена.
Предполагая, что ваши вложения находятся под пределом 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();