PHP

Utiliser un serveur SMTP externe dans WordPress 3.2+

Bon, cet article sera fait à chaud après avoir bataillé entre WordPress et un tutoriel existant mais pas à jour. Nous allons donc voir comment utiliser un serveur SMTP externe pour l’envoi d’emails avec WordPress.

Pourquoi faire cela quand WordPress doit normalement tout gérer seul (en théorie). Et bien car parfois, il arrive qu’un serveur n’ai pas de serveur de messagerie installé. Dans ce cas, il se peut que WordPress ne vous renvoie pas d’erreur lors de l’envoie du mail et que celui-ci soit perdu avant d’avoir quitté le serveur.

Pour ce faire, il est possible de modifier le comportement de WordPress et de lui obliger de passer par un serveur SMTP externe à votre serveur Web. Après les explications de base, ouvrez votre WordPress et rendez-vous dans le dossier /wp-includes/. Nous allons enfin mettre les mains dans le cambouis.

Tout d’abord ouvrez le fichier pluggable.php et allez jusqu’à la ligne 462. Vous devriez avoir ceci :

$phpmailer->IsMail();

Nous allons la remplacer par cela :

$phpmailer->IsSMTP();

Cette modification va tout simplement changer la méthode d’envoie des mails par WordPress. Nous lui indiquons ici de passer par les réglages SMTP.

Maintenant, nous allons toucher au fichier class-phpmailer.php. Ce fichier contient la classe PhpMailer qui s’occupe d’envoyer les e-mails. Qu’allons-nous faire dans ce fichier ? Juste renseigner les informations de notre serveur. Tout ceci se déroule entre la ligne 180 et la ligne 217 :

public $Host          = 'adresse de votre serveur';

/**
 * Sets the default SMTP server port.
 * @var int
 */
public $Port          = 25; //port de votre serveur

/**
 * Sets the SMTP HELO of the message (Default is $Hostname).
 * @var string
 */
public $Helo          = ''; //perso je ne m'en sers pas

/**
 * Sets connection prefix.
 * Options are "", "ssl" or "tls"
 * @var string
 */
public $SMTPSecure    = ''; //Si vous avez besoin d'une authentification SSL ou TLS, renseignez le.

/**
 * Sets SMTP authentication. Utilizes the Username and Password variables.
 * @var bool
 */
public $SMTPAuth      = false; //Metre à true si vous devez vous identifier dessus

/**
 * Sets SMTP username.
 * @var string
 */
public $Username      = ''; //login du serveur SMTP

/**
 * Sets SMTP password.
 * @var string
 */
public $Password      = ''; //Mot de passe du serveur SMTP

Voilà, normalement avec tout ceci, vous pouvez maintenant envoyer convenablement des e-mails avec WordPress via un serveur SMTP externe.