SmtpMailer send – získání message id
- elevate
- Člen | 31
Ahoj,
napadává vás někoho, jak při odesílání mailu jednoduše získat message id?
Id se generuje až v metodě send, ale ta si nejdřív message naklonuje a ještě k tomu nic nevrací. Zajímá mě, jestli je to možný udělat nějak inteligentnějc, než copy pastnout celou třídu smtp mailer :-)
e.
- echo
- Člen | 134
Zdravím, co myslíš tím message id? V api https://api.nette.org/…Message.html nikde getId() není.
Editoval echo (9. 6. 2014 12:01)
- elevate
- Člen | 31
Myslim hlavičku message-id
$message->getHeader('Message-ID')
Ona se totiž generuje při volání $message->generateMessage() ale ta z toho rovnou udělá string. Takže sem to udělal takhle:
class MyMessage extends Message
{
public function getBuilded()
{
return $this->build();
}
}
//pak si můžu vytáhnout ten message-id
a na konec sem copy pastnul celej mailer abych upravil metodu send tak, aby vracela message id. Ale moc se mi to nelíbí :-)
- echo
- Člen | 134
class MyMessage extends Message
{
private $build;
public function getBuild()
{
if(!$this->build) {
$this->build = $this->build();
}
return $this->build;
}
public function generateMessage()
{
return $this->getBuild()->getEncodedMessage();
}
public function reset()
{
unset($this->build);
}
}
class MyMailer extends SmtpMailer
{
public function send(MyMessage $mail)
{
$id = $mail->getBuild()->getHeader('Message-ID');
parent::send($mail);
$mail->reset();
}
}
Píšu od boku, ale snad to bude fungovat. :) To reset je důležité, pokud budeš odesílat znova. Myslím, že je to důvod, proč se to klonuje.
Editoval echo (9. 6. 2014 22:20)