Skip to content

Instantly share code, notes, and snippets.

@butlerblog
Last active September 24, 2024 21:50
Show Gist options
  • Save butlerblog/7e4dbafcbc61b15505ee8ca90510f1e7 to your computer and use it in GitHub Desktop.
Save butlerblog/7e4dbafcbc61b15505ee8ca90510f1e7 to your computer and use it in GitHub Desktop.
SMTP using wp-config.php for settings #smtp #wp_mail
<?php // Don't use this line.
/*
* Add the script below to wherever you store custom code snippets
* in your site, whether that's your child theme's functions.php,
* a custom plugin file, or through a code snippet plugin.
*/
/**
* This function will connect wp_mail to your authenticated
* SMTP server. This improves reliability of wp_mail, and
* avoids many potential problems.
*
* For instructions on the use of this script, see:
* https://butlerblog.com/easy-smtp-email-wordpress-wp_mail/
*
* Values for constants are set in wp-config.php
*/
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
}
<?php // Don't use this line.
/**
* Set the following constants in wp-config.php
* These should be added somewhere BEFORE the
* constant ABSPATH is defined.
*
* Make sure you know from your email host what your specific connection
* parameters are. Common defaults are given below, but if they are not
* what your host requires, you won't be able to connect. Each constant
* is noted with a comment identifying what connection parameter it is,
* but make sure you're using the correct value - check with your
* email host to confirm specific requirements. (Also confirm that your
* host allows remote connections in the first place.)
*
* For instructions on the use of this script, see:
* https://butlerblog.com/easy-smtp-email-wordpress-wp_mail/
*/
define( 'SMTP_USER', 'user@example.com' ); // Username to use for SMTP authentication
define( 'SMTP_PASS', 'smtp password' ); // Password to use for SMTP authentication
define( 'SMTP_HOST', 'smtp.example.com' ); // The hostname of the mail server
define( 'SMTP_FROM', 'website@example.com' ); // SMTP From email address
define( 'SMTP_NAME', 'e.g Website Name' ); // SMTP From name
define( 'SMTP_PORT', '25' ); // SMTP port number - likely to be 25, 465 or 587
define( 'SMTP_SECURE', 'tls' ); // Encryption system to use - ssl or tls
define( 'SMTP_AUTH', true ); // Use SMTP authentication (true|false)
define( 'SMTP_DEBUG', 0 ); // for debugging purposes only set to 1 or 2
@joao-vasconcelos
Copy link

This code works everytime.

@conschneider
Copy link

Works for me. Thank you.

@juancts
Copy link

juancts commented May 19, 2023

It works. Thanks for sharing!. Juan.

@oraneedwards
Copy link

Works perfectly. Thank You!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment