Bonjour,
comme tu dis @Nog, on fait un module, et puis on a envie/besoin d'en faire un autre
Bon ben maintenant, puisque j'arrive à envoyer des mails, ce que j'aimerais faire, c'est arriver à envoyer la facture aux clients.
Je lis et je relis la class mailerfactory, j'ai essayé de trouver des modules qui font ça pour m'en inspirer, pas trouvés.
J'essaie de m'inspirer des différents posts à ce sujet notamment : https://forum.thelia.net/viewtopic.php?id=11116 et https://forum.thelia.net/viewtopic.php?id=11689.
J'ai découvert qu'il ne faut plus utiliser swift_mailer, la doc de symfony m'explique : https://symfony.com/doc/current/mailer. … ttachments
Oui mais alors si je comprend bien leur doc, je ne peux que attacher un fichier "distant", je ne peux pas appeler un fichier géneré par une autre methode de mon listener ?
Voila le code de la methode de mon listener
public function testSend(OrderEvent $event)
{
$order = $event->getOrder();
$orderStatus = $order->getOrderStatus()->getId();
$customer = $order->getCustomer();
$order_id = $order->getId();
$message = MessageQuery::create()
->filterByName('send_invoice')
->findOne();
if ($order->isPaid('true')) {
$email = $this->mailer->createEmailMessage(
SendInvoice::SEND_INVOICE,
[ConfigQuery::getStoreEmail() => ConfigQuery::getStoreName()],
[$customer->getEmail() => $customer->getFirstname() . " " . $customer->getLastname()],
[
'order_id' => $event->getOrder()->getId(),
'order_ref' => $event->getOrder()->getRef(),
]
);
// Ajouter la pièce jointe
$pdfPath = 'https://domaine.tld/admin/order/pdf/invoice/' . $order_id . '/1';
$attachment = new File(file_get_contents($pdfPath), 'nom-du-fichier.pdf', 'application/pdf');
$email->attach($attachment);
$this->mailer->send($email);
}
}
J'ai essayé de mettre l'url en dur via $pdfPath, ça m'a renvoyé une 403, c'est très certainement bon signe.
La ligne avec le file get content est certainement très moche mais je sais pas comment écrire comme symfony le dit : ->addPart ...
Il y en a peut être d'autres, mais je vois deux solutions à mon problème,
ou bien il est possible de récuperer le pdf dans ma methode testSend,
ou bien il faut refabriquer un pdf dans une autre méthode et le faire suivre dans la methode testSend.
Pour le moment je m'y perds