Odesilani emailu pres Mandrill

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

Ahoj,

zjistoval jsem, jak odesilat emaily lepe, aby nepadali do spamu. Nejdriv jsem chtel resit vlastni SMTP server, ale pak jsem narazil na hromadu sluzeb, ktere uz to maji vyresene s peknym API a statistikami doruceni apod. Sepsal jsem je zde

Vybral jsem si Mandrill, ktery delaji kluci z Mailchimpu, se kterym mam dobre zkusenosti a jejich pricing je privetivy.
Existuje PHP knihovna, kterou jde v pohode pouzivat a obsahuje moznost zavolat vsechny funkce z Mandril API. Co mi ale vadilo, ze nema Namespace a ze se vetsina parametru predava ve velkem poli. Clovek si tak musi pamatovat, jak ho formulovat.
Proto jsem se rozhodl udelat si vlastni knihovnu, ktera by fungovala stejne, jako \Nette\Mail\Message. Muzete pak udelat:

$m = new \Fabian\Mandrill\Message($this->context->mandrill);
$m->addTo('joe@example.com', 'John Doe')
   ->setSubject('First email')
   ->setBody("Hi,\n\nthis is first email using Mandrill.")
   ->setFrom('noreplay@yourdomain.com', 'Your Name')
   ->send();

a email se odesle misto primou cestou pres PHP fci mail() pres Mandrill API. Staci tedy vlastne vymenit jen volani new \Nette\Mail\Message za new \Fabian\Mandrill\Message($this->context->mandrill) a pred tim si nastavit odpovidajici service v configu (navod zde).

Pokud to nekoho zaujalo, muze si do projektu pridat pres composer, a kdyby vam chybelo nejake volani funkce z Mandrill API, budu rad za Pull Request na Githubu;)

echo
Člen | 134
+
0
-

Nebylo by lepší to implementovat jako vlastní mailer (Nette\Mail\IMailer), když už. Rozhodně by to tak bylo více použitelné.

fabian
Člen | 20
+
0
-

echo napsal(a):

Nebylo by lepší to implementovat jako vlastní mailer

Mas pravdu, je to tak lepsi:).
Prepsal jsem to, udelal kompatibilni s \Nette\Mail\Message a v Fabian\Mandrill\Message jsem pridal nejake fce, ktere jsou specificke pro posilani emailu pres Mandrill (napr ->addTag(‚..‘);). Takze si kazdej muze vybrat, co pouzije.

Lepsi?:)

Grim
Člen | 2
+
0
-

Narazil jsem na jednu drobnost v MandrillMailer.php, řádek 61 by mělo být:

$params[‚html‘] = (string) $message->getHtmlBody();

fabian
Člen | 20
+
0
-

Grim napsal(a):

Narazil jsem na jednu drobnost v MandrillMailer.php, řádek 61 by mělo být:

$params[‚html‘] = (string) $message->getHtmlBody();

Muzes poslat pull request https://github.com/…ndrill-nette. Kdyztak se mrknu pozdeji.