Jak wygodnie wysłać e-mail?

e-maile Zostaw komentarz

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:

  1. Jeśli zamiast imienia (lub pseudonimu) wpiszesz jakiś mało logiczny ciąg znaków np. asdfg, to taki komentarz zostanie usunięty.
  2. Jeśli się za kogoś podszywasz, to taki komentarz zostanie usunęty
  3. Jeśli zamiast imienia (pseudonimu) wpiszesz jakieś słowo kluczowe (np. tani hosting), to taki komentarz zostanie usunięty
  4. Jeśli Twoim jedynym celem jest zareklamowanie się, to taki komentarz zostanie niezwłocznie usunięty
  5. Komentarze nie związane z tematem notki są kasowane.
  6. Komentarze, które zawierają wulgarne słowa, bądź są obraźliwe (nie dotyczy konstruktywnej krytyki) są kasowane.
  7. Komentarze z mailem typu "nie.podam@coś.tam.pl" są kasowane
  8. Komentarze pisane niechlujnie (bez interpunkcji, z błędami ortograficznymi, z licznymi literówkami, pisane WIELKIMI LITERAMI) są kasowane

Komentarze (3) do “Jak wygodnie wysłać e-mail?”

  1. A Ty sprawdzasz, czy wysyłane maile docierają do odbiorców? | Pomocnik webmastera Says:

    [...] serwerze gotowy skrypt do wysyłania mailingów (albo napisać samemu np. opierając się na klasie phpmailer, którą opisałem na tym [...]

  2. marian Says:

    „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..

  3. Damian Daszkiewicz Says:

    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ę

Zostaw komentarz

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj się
  • RSS
  • Newsletter
  • YouTube