SmtpMailer a Return-Path je ignorován (bounce messages)
- frosty22
- Člen | 373
Zdravím,
u SMTP serverů je problém s hlavičkou Return-Path, která je ignorována, neprošel jsem tedy všechny specifikace, či podobně, čili to „neopravuji“ rovnou v Nette, ale chci na to hlavně upozornit, kdyby náhodou někdo hledal podobný problém.
Return-Path se používá pro tzv. bounce zprávy, které vrací informace ohledně nedoručení do schránky (MAILER-DEAMON), nyní jsem právě řešil skript, který by přijímal tyto zprávy do určené schránky, odkud se budou parsovat.
U běžné fce mail toto funguje, avšak právě SMTP mi tuto direktivu ignoruje, ale našel jsem workaround http://stackoverflow.com/…-to-and-from kdy se prvně zapíše jako MAIL FROM daná schránka u Return-path a následně se podstrčí pravá schránka v hlavičce v DATA.
Udělal jsem si velice triviální implementaci, která je tedy funkční, tj. úprava Nette\Mail\SmtpMailer ve fci send:
<?php
....
$returnPath = $mail->getHeader("Return-Path");
$from = $mail->getHeader('From');
if ($from || $returnPath) {
$from = $returnPath ? $returnPath : current(array_keys($from));
$this->write("MAIL FROM:<$from>", 250);
}
....
?>
- frosty22
- Člen | 373
Tak mě to funguje, ale mám to jen otestované na sice cca 10 mail serverech, na které se to odesílá právě přes SmtpMailer, ale je dost možné, že to lze ovlivnit i na mail serveru, ty na něž jsem to testoval mají všechny stejnou konfiguraci. A stará se o to hosting, takže do tohoto nevidím, leč tedy dle diskuzí, co jsem prošel na StackOverflow, tak je to asi obecný problém a tohle je řešení.
- thunderbuff
- Člen | 164
Tohle funguje, před několika měsíci jsem si takhle ohnul mailer, od té doby poslal něco okolo milionu emailů a bounce messages bez problému fungují.
Editoval thunderbuff (6. 7. 2013 1:02)