V tomto článku se budeme zabývat využitím třídy Swift Mailer k posílání mailů pomocí programovacího jazyka PHP přes SMTP server gmailu (smtp.gmail.com). V tomto případě nelze použít vestavěnou funkci mail(), neboť gmail požaduje jak SMTP autentizaci, tak šifrovaný přenos (pomocí TLS).
Co budeme potřebovat?
- PHP 5 s povoleným rozšířením php_openssl.dll
- Swift Mailer (instalace popsána dále)
- účet na gmailu
Instalace Swift Maileru
Z webové stránky Swift Maileru si stáhneme aktuální verzi – v době psaní článku je to 3.3.3 z března 2008. Stáhneme verzi pro PHP 5. K dispozici jsou dva balíčky – jeden zabalený zipem, druhý gzipem. Oba balíčky jsou funkčně rovnocenné, vyberte si podle vlastní chuti (většinou zip pro Windows, gzip pro Unixové systémy). Po rozbalení uvidíme několik souborů a adresářů. Pro zprovoznění nám stačí zkopírovat adresář lib buď do do include_path (do adresáře, který najdeme v souboru php.ini) nebo přímo do adresáře naší aplikace. První způsob nám umožní vkládat Swift Mailer do našich aplikací pomocí require_once "lib/Swift.php";, u druhé metody budeme muset pro každou aplikaci zkopírovat soubor do adresáře aplikace a potom vkládat pomocí require_once "./lib/Swift.php";.
Zbývá jen podotknout, že u většiny hostingů zřejmě nebude možné zkopírovat soubory do include_path, na druhou stranu by měl být webhoster schopen na požádání Swift Mailer nainstalovat.
Jak odeslat e-mail přes gmailí SMTP?
V této části si ukážeme jednoduchý kód pro poslání e-mailu a tento si okomentujeme.
require_once "lib/Swift.php"; // require potøebných souborù require_once "lib/Swift/Connection/SMTP.php"; $smtp = new Swift_Connection_SMTP("smtp.gmail.com", // pøipoj se přes smtp.gmail.com Swift_Connection_SMTP::PORT_SECURE, // zabezpečené spojení Swift_Connection_SMTP::ENC_TLS); // pomocí TLS $smtp->setUsername("example@gmail.com"); // uživatelské jméno (pro SMTP autorizaci) $smtp->setPassword("password"); // heslo $swift = new Swift($smtp); // vytvoøíme objekt Swift Maileru $msg = new Swift_Message("Pøedmìt e-mailu", // vytvoøíme novou zprávu "Zdar, toto je testovací e-mail pøes Swiftmailer a gmail SMTP server"); $msg->setCharset("utf-8"); // nastavíme kódování // zkusíme odeslat if ($swift->send($msg, "e-mail@prijemce.cz", "e-mail@odesilatele.cz")) echo "sent"; else echo "error";