Při odesílání mailu se přidá adresát z předchozího odeslání mailu
- tessicz
- Člen | 5
Zdravím a prosím o pomoc.
Mám objednávkový formulář po jehož vyplnění, odeslání, uložení do DB odešlu klientovi potvrzující mail a zároveň sobě notifikační mail, jenže ten notifikační mail obsahuje po odeslání i adresu adresáta z předchozího mailu.
poradíte mi kde dělám chybu? S nette se teprve učím tak budu rád za každou radu.
po odeslání formuláře:
public function tourFormSubmitted(Form $form) {
$this->productRepository->createProduct($form->getValues());
$this->myMessage->sendConfirmMail($form->getValues());
$this->myMessage->sendNotificationMail($form->getValues());
$this->flashMessage('objednano.', 'success');
$this->redirect('Homepage:default');
}
MyMessage mam registrovanou jako sluzbu a vypada takhle:
<?php
namespace Offer;
use Nette\Mail\Message;
class MyMessage extends Message {
//oznameni na mail o nove obednavce
public function sendNotificationMail($form) {
$this->setFrom('Objednávka VT <mail@mail.xx>')
->addTo('mail2@mail2.yy')
->setSubject('predmet')
->setHTMLBody("text")
->send();
}
//potvrzujici mail
public function sendConfirmMail($form) {
if ($form['owen_use'] == 1) {
$owen_use = "Ano";
} else {
$owen_use = "Ne";
}
$this->setFrom('Objednávka VT <mail@mail.xx>')
->addTo($form['mail'])
->setSubject('predmet')
->setHTMLBody("text")
->send();
}
public function sendConfirmOrderMail($form) {
$this->setFrom('Objednávka VT <mail@mail.xx>')
->addTo($form['mail'])
->setSubject('predmet')
->setHTMLBody("text")
->send();
}
}
?>
- jiri.pudil
- Nette Blogger | 1032
Problém je v tom, že používáš pořád stejnou instanci třídy
Message
. A zatímco metody set*
příslušné
vlastnosti přepíšou, metoda addTo
adresáta
přidá.
Podědil bych si spíš Mailer
než Message
:
class MyMailer extends Nette\Mail\SendmailMailer
{
public function sendNotificationMail($data)
{
$mail = new Nette\Mail\Message;
$mail->setFrom('Objednávka VT <mail@mail.xx>')
->...;
$this->send($mail);
}
// další metody obdobně
}
Editoval jiri.pudil (25. 11. 2012 0:06)
- Nox
- Člen | 378
Nepleť si Mailer a Message. Mailer je entita co posílá zprávy, Message je ta jedna zpráva. Mailer stačí používat normálně jeden, ale u Message pro každou zprávu vytvoř novou instanci. Mělo by to jít přes context->createMail() pro message, ale nejsem si jistý (dle https://api.nette.org/…ion.php.html#207 )
Editoval Nox (25. 11. 2012 11:00)