Supposons que nous ayons un site WP vierge et que nous voulons configurer les paramètres SMTP par programme dans notre plugin ou thème. Quelle est la façon la plus simple de le faire sans modifier les fichiers principaux?
Tout d'abord, si nous regardons l'implémentation de la wp_mail
fonction, nous verrons que cette fonction utilise la PHPMailer
classe pour envoyer des emails. Nous pourrions également remarquer qu'il existe un appel de fonction codé en dur $phpmailer->IsMail();
, qui définit l'utilisation de la mail()
fonction PHP . Cela signifie que nous ne pouvons pas utiliser les paramètres SMTP avec lui. Nous devons appeler la isSMTP
fonction dePHPMailer
classe. Et nous devons également définir nos paramètres SMTP également.
Pour y parvenir, nous devons avoir accès à la $phpmailer
variable. Et ici, nous arrivons à l' phpmailer_init
action qui est appelée avant d'envoyer un e-mail. Nous pouvons donc faire ce dont nous avons besoin en écrivant notre gestionnaire d'actions:
add_action( 'phpmailer_init', 'wpse8170_phpmailer_init' );
function wpse8170_phpmailer_init( PHPMailer $phpmailer ) {
$phpmailer->Host = 'your.smtp.server.here';
$phpmailer->Port = 25; // could be different
$phpmailer->Username = '[email protected]'; // if required
$phpmailer->Password = 'yourpassword'; // if required
$phpmailer->SMTPAuth = true; // if required
// $phpmailer->SMTPSecure = 'ssl'; // enable if required, 'tls' is another possible value
$phpmailer->IsSMTP();
}
Et c'est tout.
wp_mail
fonction de réécriture .Ajout à la réponse @EugeneManuilov.
Paramètres SMTP
Par défaut, ceux-ci ne peuvent être définis - comme @EugeneManuilov l'a déjà répondu - que lors d'un rappel attaché à un
do_action_ref_array()
. Source / noyau .Exceptions SMTP
Par défaut, WordPress ne vous donne aucune sortie de débogage. Au lieu de cela, il revient simplement
FALSE
si une erreur s'est produite. Voici un petit plugin pour résoudre ce problème:Dépôt
Les plugins sont tous deux disponibles dans ce Gist sur GitHub , alors pensez à vérifier ces plugins à partir de là pour récupérer les mises à jour.
la source
Les autres réponses à ce message, tout en fournissant une solution de travail, ne résolvent pas le problème de sécurité du stockage de vos informations d'identification SMTP dans un fichier de plug-in ou functions.php. Dans certains cas, cela peut être acceptable, mais les meilleures pratiques dicteraient le stockage de ces informations de manière plus sécurisée. Il n'y a vraiment aucune bonne raison de ne pas suivre les meilleures pratiques en matière de protection de vos informations d'identification.
Certains suggèrent de l'enregistrer dans la base de données en option, mais offrent également les mêmes problèmes de sécurité selon le nombre d'utilisateurs administratifs de votre site et si ces utilisateurs devraient pouvoir voir ces informations de connexion. C'est aussi la même raison de ne pas utiliser de plugin pour cela.
La meilleure façon de le faire est de définir des constantes pour les informations phpmailer dans votre fichier wp-config.php. En fait, cela a été discuté en tant que fonctionnalité dans le composant Mail , mais n'a pas été accepté comme une amélioration réelle pour le moment. Mais vous pouvez le faire vous-même en ajoutant ce qui suit à wp-config.php:
Une fois ceux-ci définis dans wp-config.php, ils peuvent être utilisés n'importe où en utilisant la constante définie. Vous pouvez donc les utiliser dans un fichier de plugin ou dans votre functions.php. (Spécifique à l'OP, utilisez un fichier de plugin.)
Il y a un peu plus de détails à ce sujet dans cet article et un résumé sur github ici .
la source
.env
fichier gitignored . Mais personne qui met quelque chose de sensible danswp-config.php
utilise le contrôle de version, de toute façon…