Vorbim despe acea funcție prin care un site trimite un mail. Fie că vorbim de mailul automat de la un shop online sau dorești să faci un serviciu de mass mailing (de genul unui newsletter). WordPress, Drupal, Prestashop sau Magento au nativ acest lucru, fie că vorbim de recuperări de parole, formulare de contact, trimitere de proforme etc.
Dar ce faci atunci când nu merge PHP mailingul? Dar nimic complicat. Folosești alternativa SMTP . Și într-un fel e mai bine și mai corect. Folosești o adresă reală, te conectezi la un server, nu se creează delay și are mai mari șanse să intre în Inbox acel mail.
Eu am aflat, de exemplu, că la Xservers l-au dezactivat, așa că dacă nu vă merge formularul de contact sau magazinul online nu trimite mailuri, ori urmați pașii de mai jos, ori puteți să mergeți la u autoservire să mâncați o ciorbă de burtă la temperatura asta, e la fel de util.
- În primă instanță testezi funcția de PHP mailing, să vezi dacă este de acolo problema:
<? $headers = 'From: [email protected]'; mail('[email protected]', 'Oare merge?', 'Acesta este doar un mail test', $headers, '[email protected]'); ?>
Salvezi chestia asta într-un fișier php și îl accesezi. Nu uita să-i dai permisiunile necesare. Apoi vezi dacă îți vine mailul sau nu.
- Testezi dacă îți functionează să trimiți prin Web SMTP. Ai spune că ar fi variantă absolut logică, dar nu e chiar așa. Unele hostinguri au nevoie de setări speciale, asta dacă ai mailul pe același server. Dacă ai MX Records-urile în altă parte sau vrei să folosești o adresă de mail @altdomeniu, folosești credențialele respective (cum ar fi Gmail). De precizat pentru utilizatorii Zoho este faptul că nu le poți lega. Nu merge, am încercat în toate felurile, serverul refuză conexiunea.
<?php require_once "Mail.php"; $from = "Testare Mail STMP <[email protected]>"; $to = "Utilizator test <[email protected]>"; $subject = "Incercam SMTP\r\n\r\n"; $body = "Acesta este doar un mesaj test"; $host = "SMTPserver"; $username = "[email protected]"; $password = "parolata"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo(" " . $mail->getMessage() . " "); } else { echo(" Mesajul a fost trimis cu succes! "); } ?>
Apoi avem si varianta SSL
<?php require_once "Mail.php"; $from = "Testare Mail STMP <[email protected]>"; $to = "Utilizator test <[email protected]>"; $subject = "Incercam SMTP\r\n\r\n"; $body = "Acesta este doar un mesaj test"; $host = "ssl://SMTPserver"; $port = "465"; $username = "[email protected]"; $password = "parolata"; $headers = array ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', array ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo(" " . $mail->getMessage() . " "); } else { echo(" Mesajul a fost trimis cu succes! "); } ?>
- Implementezi în site ce ai de făcut.
BONUS: Pentru cei care folosesc WordPress și probabil au stat deja câteva ore urmărind error_loguri care nu mai apar. Instalați modului WP Mail SMTP , apoi veți vedea că în spate la Setări, a apărut o rubrică nouă, E-mail, în care puteți completa cu credențialele SMTP.