Pisząc skrypt często istnieje potrzeba wysłania wiadomości e-mail. Nawet nie mam tutaj na myśli pisania prostych systemów do mailingu, ale zwykłą aplikację. Ot choćby np. prosta aplikacja gdzie użytkownik zakłada konto. Zazwyczaj przychodzi do niego wiadomość z prośbą o kliknięcie w link weryfikacyjny, potem podziękowanie za rejestrację, link do resetowania hasła również przychodzi na e-maila.
W wielu kursach php często podaje się wygodną funkcję mail. Ma ona jedną zaletę: jest prosta
mail("", "Temat", "Tresc", "Dodatkowe naglowki");
W ten sposób można szybko napisać prostą funkcję wysyłającą e-maile. Jednak gdy chcemy wysyłać e-maile w HTMLu, albo z załącznikami, albo jedno i drugie to robi się problem. Bo trzeba bawić się w tworzenie wielu dodatkowych nagłówków. Tutaj z pomocą przychodzi nam gotowa klasa phpmailer.
Dlaczego polecam tę klasę? Otóż można wysyłać maile przez SMTP. Oprócz tego nie musisz wchodzić w jakieś techniczne szczegóły typu jaki nagłówek dodać, aby coś tam zrobić. Wywołujesz odpowiednie metody a reszta Ciebie totalnie nie interesuje! Więc nie marnujesz czasu na jakieś głupoty, możesz swój cenny czas poświęcić na rozwijanie kluczowych części swojej aplikacji. Poniżej prezentuję prosty przykład wysyłający e-mail w formacie HTML (z wersją też w txt), którego treść jest pobierana z pliku contents.html. Jeśli w pliku html są grafiki, to są one załączane do e-maila (nie będą ciągnięte z zewnętrznego serwera, tylko są zapisane w treści wiadomości). Dodatkowo jest też załączany zwykły załącznik (ja.jpg). Jak myślisz? Ile czasu być coś takiego pisał „ręcznie”?
error_reporting(E_STRICT);
date_default_timezone_set('Europe/Warsaw');require_once('../class.phpmailer.php');$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mapazdrowia.kei.pl";
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent
$mail->Host = "HOST"; // sets the SMTP server
$mail->Port = 25;//26; // set the SMTP port for the GMAIL server
$mail->Username = "USERNAME"; // SMTP account username
$mail->Password = "PASSWORD"; // SMTP account password
$mail->SetFrom('Mó', 'IMIE I NAZWISKO');
$mail->AddReplyTo('Mó', 'IMIE I NAZWISKO');
$mail->Subject = "PHPMailer Test Subject via smtp, basic with authentication";
$mail->AltBody = "Opcjonalna wiadomość w wersji tekstowej!";
// optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAddress('', 'Damian');
$mail->AddStringAttachment(file_get_contents('ja.jpg'), 'ja.jpg');if(!$mail->Send()) {
echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo . '
';
} else {
echo 'OK
';
}
Podsumowując: jeśli jeszcze nigdy nie używałeś klasy phpmailer to najwyższy czas się nią zainteresować!
Zanim dodasz komentarz, zapoznaj się z kilkoma podstawowymi zasadami:
- Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
- Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
- Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
- Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
- Komentarze nie związane z tematem notki są kasowane.
- Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
- Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
- Komentarze pisane niechlujnie (bez interpunkcji, w błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

28 wrz 2010 o 9:28
[...] serwerze gotowy skrypt do wysyłania mailingów (albo napisać samemu np. opierając się na klasie phpmailer, którą opisałem na tym [...]
13 gru 2010 o 22:05
„Jednak gdy chcemy wysyłać e-maile w HTMLu, albo z załącznikami, albo jedno i drugie to robi się problem. Bo trzeba bawić się w tworzenie wielu dodatkowych nagłówków.”
Tutaj przesadziłeś, aby wiadomość wysłać w HTML-u wystarczy dać nagłówek „Content-Type: text/html;”, nie jest to takie ciężkie..
14 gru 2010 o 18:05
Masz rację. Z drugiej strony apetyt rośnie w miarę jedzenia i chce się później:
- dodać mailing w formacie mieszanym (wersja TXT+HTML)
- dodać załącznik
Tak więc dodanie tylko jednego nagłówka nie zawsze wchodzi w grę