web-dev-qa-db-fra.com

problème avec l'en-tête php 'De'

Je construis un site Web qui envoie et envoie un courrier électronique à un utilisateur lors de son inscription.

Mon code (l'essentiel):

<?php
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! \nThis is a simple email message.";

$headers = "From: [email protected]";
$headers .= "\r\nReply-To: [email protected]";
$headers .= "\r\nX-Mailer: PHP/".phpversion();

mail($to,$subject,$message,$headers);

echo "Mail Sent.";
?> 

le problème est que, lorsque le courrier est remis, l'en-tête de de demeure [email protected], tandis que la réponse à est remplacée par la valeur spécifiée.

box123.bluehost.com est le nom d'hôte du serveur sur lequel le site Web est hébergé.

Alors qu'est-ce que je fais mal? Que puis-je faire pour que l'adresse "De" soit identique à l'adresse de réponse?

Est-ce quelque chose que je fais mal, ou est-ce que l'hébergeur Web joue le jeu?

28
jrharshath

Edit: Je viens de noter que vous essayez d’utiliser une adresse Gmail comme valeur de départ. Cela ne fonctionnera pas , et le FAI a raison de l'écraser. Si vous souhaitez rediriger les réponses vers vos messages sortants, utilisez reply-to.

Solution de contournement pour les adresses valides qui fonctionne avec de nombreux fournisseurs de services Internet:

essayez d'ajouter un cinquième paramètre à votre commande mail()

mail($to,$subject,$message,$headers,"-f [email protected]");
54
Pekka 웃

Il s'avère que le serveur de l'affiche originale (blueHost) a une FAQ concernant cette question même .

Article 206.


En effet, nos serveurs exigent que vous (ou votre script) utilisiez un champ De: valide et correctement formaté dans l'en-tête de l'e-mail. Si le champ De: n'est pas correctement formaté, vide ou si l'adresse électronique n'existe pas dans le cPanel, l'adresse De: sera remplacée par username@box###.bluehost.com.

Vous devez changer le script que vous utilisez pour utiliser correctement un From: header. valide.

Voici des exemples d'en-têtes qui devraient fonctionner:

De: [email protected]
De: "utilisateur" <[email protected]>

Exemples d'en-têtes qui ne fonctionneront PAS:

De: "[email protected]"
De: utilisateur @ domaine.com
De: [email protected] <[email protected]

Nos serveurs n'accepteront pas que le nom de l'adresse e-mail et l'adresse e-mail soient identiques. Il n'acceptera pas une double déclaration de l'adresse email.

Pour les scripts tels que Joomla et Wordpress, vous devrez suivre leur documentation pour formater correctement les champs à partir de. Wordpress nécessitera le plugin Mail From.

Remarque: l'adresse e-mail que vous utilisez doit être un compte créé valide dans le fichier cPanel.

20
John Connolly

J'ai eu le même problème, j'ai consulté le site php.net. Et trouvé le bon format.
Ceci est mon code mis à jour. 

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From:  ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
            'Reply-To: '.  $fromEmail . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

Le\r\n devrait être en guillemets doubles "" lui-même, le guillemets simples (') ne fonctionnera pas. 

13
Eugine Joseph

Afin d'éviter le phishing, certains serveurs de messagerie empêchent la réécriture de De.

4
Luís Guilherme

J'ai résolu ce problème en ajoutant des comptes de messagerie dans Cpanel et en ajoutant le même courrier électronique à l'en-tête du champ tel que celui-ci. 

$header = 'From: XXXXXXXX <[email protected]>' . "\r\n";
1
Anahit DEV

Je me rends compte que c'est un vieux fil, mais j'avais le même problème depuis mon déménagement chez bluehost hier. Cela n’a peut-être pas été la réponse choisie, mais j’appuie la réponse de l’article 206 de Bluehost. 

J'ai créé un courrier électronique valide dans le panneau de configuration et je l'ai utilisé comme adresse d'expéditeur.

1
Rvenca

L'hébergeur ne joue pas vraiment de faute. Ce n'est pas strictement conforme aux règles - mais comparé à certaines des incroyables inventions destinées à empêcher le spam, ce n'est pas particulièrement mauvais.

Si vous souhaitez vraiment envoyer des messages à partir de "@ gmail.com", pourquoi ne pas utiliser simplement le service SMTP de gmail? Si vous ne pouvez pas reconfigurer le serveur sur lequel PHP est en cours d'exécution, de nombreux outils d'encapsuleur vous permettent de spécifier un relais SMTP personnalisé comme phpmailer.

C.

0
symcbean

les en-têtes ne fonctionnaient pas pour moi sur mon hébergement partagé, parce que j'utilisais mon adresse e-mail hotmail dans l'en-tête J'ai créé un email sur mon cpanel et j'ai mis ce même email dans l'en-tête ouais ça a fonctionné comme un charme

 $header = 'From: ShopFive <[email protected]>' . "\r\n";
0
zeeshan