Az alábbi kivonatos írás a SwiftMailer 3.x verzióhoz használható. Jelen pillanatban a 3.2.2 a legfrissebb. Az alábbiakban nem törekszem a teljességre, de szeretném idővel minél tökéletesebbé tenni.
A SwiftMailer egy teljes mértékben objektum orientált levélküldő php-hez, mely nem a php mail() függvényére támaszkodik, hanem közvetlenül kommunikál az SMTP szerverrel. A program minden része objektumokból épül fel, ezért maximálisan testre szabható, bővíthető. Emellett tapasztalataim szerint nagyon gyors, és abszolut megbízható (jobb,mint a PHPMailer).
Külön változat van php4 és php5-höz, töltsd le a neked megfelelő phphoz való változatot. A zipben a lib/ a minket leginkább érdeklő mappa.
Új levél létrehozás:
Az új levélküldőnek meg kell adnunk egy kapcsolatot is, amely lehet: SMTP, Sendmail, NativeMail, … Én az SMTP-t fogom használni.
$connection =& new Swift_Connection_SMTP($host, $port);
A $host-ot mindenképpen meg kell adnunk (ez általában localhost), a port opcionális. Ezután létrehozhatjuk az új levélküldőt:
$mail =& new Swift($connection);
vagy
$mail =& new Swift(new Swift_Connection_SMTP($host, $port));
Ezután már küldhetjük is a levelet:
$mail->send($message, címzettek…);
Miután végeztünk a küldéssel le kell zárnunk a kapcsolatot:
$mail->disconnect();
A send() paraméterei:
Címzettek:
Kezdjük a rövidebbel: a címzettek. A címzett(ek)et egyszerű felsorolással adhatjuk meg két módon:
- egyszerű string literál az email címmel
- használhatjuk a Swift_Address() objektumot: Swift_Address($email [, $name])
Ha több címzettet szeretnénk kezelni, akkor elgondolkozhatunk a Swift_RecipientList() használatán.
$recipients =& new Swift_RecipientList();
$recipients->addTo($email [, $name]);
$recipients->addCc($email [, $name]);
$recipients->addBcc($email [, $name]);$mail->send($message, $recipients, további_címzettek…)
Az üzenet:
Elérkeztünk a legfontosabb részhez. A swift külön message objektumot kínál a probléma megoldására:
$message =& new Swift_Message([title, body]);
Személyszerint én csak a címet szoktam megadni, a többire sokkal jobb eszközeink vannak.
Szövegtörzs (és bármilyen más elem) hozzáadása: (ki hinné, hogy ennyire egyszerű?)
$message->attach(new Swift_Message_Part(szöveg));
Melléklet hozzáadása:
$message->attach(new Swift_Message_Attachment(…));
A Swift_Message_Attachment(file_content, file_name, mime_type) paraméterei:
Swift_Message_Attachment(file_content, file_name, mime_type)
- file_content: a file tartalma (pl. file_get_contents() függvénnyel beolvasva)
- file_name: az a név, amellyel csatolni szeretnénk a levélhez
- mime_type: a melléklet mime típusa
vagy
Swift_Message_Attachment(new Swift_File(full_path_to_file))
A Swift_File() nagy előnye, hogy pusztán a file teljes elérési útját kell megadni, a többit az objektum intézi. Az előző metódussal szemben, ez nem rántja be a file teljes tartalmát a memóriába, csak akkor használja fel azt, amikor a levelet véglegesen(?) összeállítja.
Kép beágyazása:
Rendkívül egyszerű, PHPMailer-esek figyeljenek:
$message->attach(new Swift_Message_Image(new Swift_File(full_path_to_file)));
Ennek a módszernek a nagy előnye, hogy a fenti sor egy azonosítót ad vissza, amellyel a levélben a képre hivatkozhatunk. Tehát a tényleges használata:
$img = $message->attach(new Swift_Message_Image(…));
<img src=”$img” alt=”" />
És kész.
A fenti írás csak egy rövid összefoglaló, nem teljes és nem helyettesítheti a hivatalos tutorialt és api leírást.
Itt csak a levélküldésre tértem ki, de a rendszer nagyon könnyen és szépen bővíthető, testre szabható. Plugin hozzáadásval és Swift_Plugin_Decorator használatával például személyreszabott levél is küldhető, nem kell törődnünk vele, pusztán a csere szövegeket kell megadni és a többit a program intézi. Arról nem is beszélve, hogy saját igényeknek megfelelő pluginokkal a határ a csillagos ég.