web-dev-qa-db-fra.com

Comment définir l'expéditeur "de" dans WHM ou comment empêcher le serveur de l'écraser?

J'utilise wordpress. Wordpress a sa propre fonction de messagerie appelée wp_mail (), qui est très similaire à la fonction php mail ().

La fonction wp_mail vous permet de passer des en-têtes, tels que le champ "De". Plusieurs plugins l'utilisent (par exemple, les formes à gravité).

Cependant, lorsque je vérifie les journaux de messagerie dans WHM, je constate que tous les champs "De" sont soit [email protected], soit par [email protected].

Il semble que le serveur écrase ou ignore les en-têtes transmis par wordpress.

Quelqu'un at-il rencontré des problèmes similaires? Existe-t-il des paramètres que je peux vérifier dans WHM pour éviter que cela ne se produise?

2
gdaniel

Ceci est destiné par votre hébergeur pour empêcher le spam, l'hameçonnage et les activités frauduleuses sur leurs serveurs. Ils ré-enregistreront le serveur Origin lorsque vous envoyez un courrier électronique non authentifié et cPanel. Généralement, la plupart des sociétés d’hébergement fonctionnent de cette façon et vous n’êtes pas le seul à avoir ce problème avec PHP un courrier provenant de réécritures d’en-têtes .

Ceci est dû au fait que vous n’envoyez pas réellement le courrier électronique de @example.com mais plutôt [email protected], le serveur d’origine doit donc être affiché.

L'utilisateur final peut lire l'en-tête qui l'a envoyé, mais le reply-to sera le courrier électronique que vous falsifiez. Vous pouvez résoudre ce problème en utilisant de bonnes méthodes d’envoi de courrier électronique qui amélioreront les taux de réussite des envois vous aideront à éviter que votre courrier ne soit classé comme spam .

Pour résoudre le problème, vous devez envoyer les e-mails à l'aide de votre compte e-mail, et non en usurpant l'e-mail à l'aide du simple wp_mail prêt à l'emploi.

Cela peut être fait en utilisant des plugins tels que Contact Form 7, mais si vous préférez une méthode qui ne nécessite pas l'installation de plugins, vous pouvez utiliser une méthode functions.php.

Quelque chose comme ça dans votre functions.php:

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();
}
1
Simon Hayter