SmtpMailer send – získání message id

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
elevate
Člen | 31
+
+1
-

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
+
0
-

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
+
0
-

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
+
+3
-
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)

elevate
Člen | 31
+
0
-

Díky moc!! Nechápu že mě to nenapadlo.. stydim se :-)