Så här skickar du WordPress-e-post med SMTP-server
Står du inför problem med att skicka e-post på WordPress? Under huven skickar WordPress e-post med PHP: s e-post() -funktion. Ibland konfigurerar din webbhotell inte e-postinställningarna korrekt. Som ett resultat kan inga e-postmeddelanden skickas från din WordPress-webbplats.
Du kan lösa detta problem med SMTP-servern. Vanligtvis tillhandahåller webbhotell företag sin egen SMTP-server som du kan använda för att skicka e-post till din webbplats.
Alternativt kan du gå till andra SMTP-servrar som Gmail, Mailjet, etc. Allt det kräver grundläggande information om SMTP-servern som värd, port, etc.
Med det sagt, låt oss se hur man använder SMTP-servern för att skicka WordPress-e-post.
PHPMailer i WordPress
WordPress inkluderar PHPMailer-klassen i sin kärna. Om du vill kontrollera den hittar du den här filen under wp-includes/PHPMailer/PHPMailer.php
.
Om vi konfigurerar PHPMailer i WordPress wp_mail
skickar funktionen e-postmeddelanden via denna PHPMailer-klass. I så fall wp_mail
beror metoden inte på värdinställningarna. Istället använder de dina SMTP-serverinställningar.
Jag ska använda den här PHPMailer-klassen för e-postmeddelanden. Eftersom den här klassen redan ingår i WordPress behöver vi inte installera PHPMailer-biblioteket separat.
Man kan använda WP Mail SMTP- plugin som också skickar e-postmeddelanden med SMTP-servrar. Men jag rekommenderar alltid om något kan uppnås genom att skriva en liten kod, gå sedan till det. Det är bra att använda färre plugins som möjligt. Att använda fler plugins på webbplatsen ökar den extra belastningen på servern. Och ibland blir plugins konflikter med varandra som kan hamna på en trasig webbplats.
Skicka WordPress-e-post via SMTP-server
Innan du fortsätter bör du vara redo med dina SMTP-uppgifter som värd, port, användarnamn och lösenord.
Om du planerade att använda Gmail SMTP-servern måste du ändra vissa inställningar på ditt Google-konto. Logga in på ditt Google-konto för detta och klicka på Kontot. När du är på kontosidan klickar du på Säkerhet. Rulla ner till botten så hittar du inställningarna för ‘Mindre säker appåtkomst’. Ställ den på PÅ.
För att konfigurera PHPMailer i WordPress finns det en krok tillgänglig som är phpmailer_init. Med hjälp av phpmailer_init
hook kan vi komma åt PHPMailer-objektet och ställa in argumenten på det.
Öppna ditt aktiva temas functions.php
fil och placera koden nedan i slutet av en fil.
add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'YOUR_SMTP HOST';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 'SMTP_PORT'; //25 or 465
$phpmailer->Username = 'SMTP_USERNAME';
$phpmailer->Password = 'SMTP_PASSWORD';
$phpmailer->SMTPSecure = 'ssl'; //ssl or tls
}
Se till att ersätta platshållarna med de faktiska värdena. Låt oss säga att vi använder Gmail SMTP-server så kommer vår kod att skrivas enligt följande:
add_action( 'phpmailer_init', 'set_phpmailer_details' );
function set_phpmailer_details( $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.googlemail.com'; //gmail smtp host
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 465;
$phpmailer->Username = 'GMAIL_USERNAME';
$phpmailer->Password = 'GMAIL_PASSWORD';
$phpmailer->SMTPSecure = 'ssl';
}
Du måste skicka det faktiska användarnamnet och lösenordet för ditt Gmail-konto i ovanstående kod. Försök nu skicka e-post från din WordPress-webbplats, e-post bör börja fungera.
Felsöka e-postproblemet
Just nu, även efter att du har använt PHPMailer, fungerar dina e-postmeddelanden inte och då kan wp_mail_failed
du få orsaken till problemet med hjälp av åtgärden. Använd koden nedan för att felsöka problemet.
add_action('wp_mail_failed', 'log_mailer_errors', 10, 1);
function log_mailer_errors( $wp_error ){
$fn = ABSPATH. '/mail.log'; // say you've got a mail.log file in your server root
$fp = fopen($fn, 'a');
fputs($fp, "Mailer Error: ". $wp_error->get_error_message() ."n");
fclose($fp);
}
Jag hoppas att du förstår hur du skickar WordPress-e-postmeddelanden med SMTP-servern. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Skicka e-post med Gmail SMTP-server från PHP-skript
- Skicka e-post via Gmail SMTP-server i Laravel
- Skicka e-post med Mailjet i PHP