web-dev-qa-db-fra.com

Formulaire de contact 7: wp_mail ne fonctionne pas après la mise à jour vers la version 4.6

La fonction wp_mail ne fonctionne pas après la mise à jour de WordPress vers la version 4.6 .

Mon code est:

$headers = 'From: ' . $this->from_name . ' <' . $this->from_email .'>' . "\r\n";
wp_mail( $service->getEmail(), $this->admin_daily_subject, $admin_daily_message, $headers );

Cela fonctionnait parfaitement avant la mise à jour. En outre, j'ai remarqué que l'envoi d'e-mails ne fonctionne pas dans Formulaire de contact 7 . Des idées? Merci d'avance.

UPDATE

N'ayant pas trouvé la solution, j'ai remplacé wp_mail par la fonction mail et ajouté quelques en-têtes:

$headers = 'From: ' . $this->from_name . ' <'.$this->from_email.'>' . "\r\n" .
                           'Reply-To: '.$this->from_email . "\r\n" .
                           'X-Mailer: PHP/' . phpversion() . "\r\n" .
                           "Content-Type: text/html; charset=UTF-8";
mail( $service->getEmail(), $this->admin_daily_subject, $admin_daily_message, $headers );

Avec cette mise à jour, cela fonctionne. J'espère qu'il y aura des mises à jour du codex wp sur l'utilisation de wp_mail() avec la version 4.6 ou que quelqu'un trouvera une solution.

UPDATE 2

Il semble que je ne sois pas le seul à être confronté à ce problème:

Une erreur s'est produite lors de la tentative d'envoi de votre message

4
IvnH

La solution a été trouvée ici - Make WordPress Core

J'ai apporté des modifications dans wp-includes/pluggable.php à la ligne 352 de

$phpmailer->setFrom( $from_email, $from_name ); 

à

$phpmailer->setFrom( $from_email, $from_name, false ); 

Et il fonctionne! Merci à Marius L. J. (Clorith)!

5
IvnH

Sur vous sur WAMP? Quoi qu'il en soit, il semble que la fonction php mail() intégrée à votre version php soit indisponible pour une raison quelconque (elle ne fonctionne généralement pas sur les versions WAMP ou * nix ne disposant pas d'un serveur smtp interne). Votre meilleur pari est probablement de commencer à utiliser SMTP pour envoyer des emails.

Vous pouvez utiliser votre propre plugin pour cela, mais personnellement, j'aime bien utiliser WP Mail SMTP . Vous pouvez utiliser un compte gmail pour les informations d'identification SMTP ou quelque chose comme Mailgun en fonction du volume d'e-mails que vous devez envoyer.

Si vous voulez écrire votre propre plugin, vous voudrez accrocher phpmailer_init et modifier la variable globale $phpmailer avec quelque chose comme ceci:

$phpmailer->IsSMTP();
$phpmailer->Host = "smtp.example.com";
$phpmailer->Port = <SMTP PORT>;
$phpmailer->SMTPSecure = 'ssl';  //optional, can also be 'tls'
$phpmailer->SMTPAuth = true;
$phpmailer->Username = '<your smtp username>';
$phpmailer->Password = '<your smtp password>';
3
TheGentleman

J'ai installé WP-Mail-SMTP a créé un [email protected] avec une citation 0b. Configuré WP-Mail-SMTP pour utiliser [email protected] - SSL On - Remplace localhost par le serveur sur lequel vous hébergez - Le port SMTP pour SSL est 465 Testé WP-Mail-SMTP a fonctionné.

Je ne pouvais toujours pas obtenir le formulaire de contact 7 au travail, j'ai alors pensé que le morceau manquant de ce casse-tête était que je devais modifier le formulaire de contact 7 à partir de l'adresse [email protected] pour être [email protected]

En outre, la lecture de https://contactform7.com/faq/ m'a été utile, m'a incitée à utiliser l'application de diffusion de pistes dans l'hébergement cpanel. Il est bon de vérifier ceci car il vous dira si vous vous connectez et essayez de envoyer un email. De plus, l'utilisateur avait activé akismet mais n'était pas actif, alors désactivez-le. Mentionne également certains problèmes liés à la fréquence d'effacement du cache.

Les autres choses à regarder sont si vous avez la bonne PHP version définie dans cPanel.

Un post précédent mentionnant de modifier pluggable.php dans wp includes est une mauvaise idée, vous ne devriez pas modifier le noyau de WordPress pour résoudre de tels problèmes, car une nouvelle mise à jour le corrigera probablement.

METTRE À JOUR

J'ai enlevé le captcha d'un formulaire qui ne fonctionnait pas et ça fonctionnait !!

Recaptcha
[recaptcha]

Quelque chose avec recaptcha est cassé.


FIXE!

Des forums de support de plugin sur recaptcha brisant l'envoi du formulaire ont dit d'ajouter:

https://wordpress.org/plugins/contact-form-7-recaptcha/

Je pensais documenter tout mon effort de réparation au cas où l'un de mes efforts infructueux porte des fruits pour quelqu'un d'autre en difficulté.