Est-ce que mon en-tête est correct?
Question
Est-ce que "& From; From" est le suivant? header incorect?
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'From: Mail Master <mail@mailmaster.com>' . "\r\n";
if(sendEmailNow($email, $subject, $body, $headers)){
Je reçois l'erreur de mon serveur de messagerie. "Mail from error: Erreur de syntaxe".
Merci à tous pour toute aide.
Mettre à jour
J'ai réduit la fonction SendEmailNow au code ci-dessous et j'ai la même erreur:
//send an email
function sendEmailNow($email, $subject, $body, $headers){
if (mail($email, $subject, $body, $headers)) {
##check email
##code to say email sent - compare with the number registered
return true;
}
else {
##code to report an error
return false;
}
}
Mise à jour 2
Problème résolu. J'exécute ceci sur une machine Windows en utilisant PHP 5. J'aime la bonne réponse choisie et les commentaires l'ont dit. Certains serveurs de messagerie ont du mal à comprendre ce que j'avais auparavant. Mais ce qui a fonctionné pour moi a été ceci:
$headers .= 'From: mail@mailmaster.com' . "\r\n";
La solution
Une recherche Google du message d'erreur suggère que certains serveurs SMTP ne parviennent pas à analyser la syntaxe de l'en-tête De
. Pouvez-vous essayer la syntaxe suivante pour écarter cette possibilité?
From: mail@mailmaster.com
Autres conseils
À moins que le corps ne soit vide, vous aurez peut-être besoin d'un CRLF supplémentaire pour terminer les en-têtes. Sans connaître l’API, je ne peux pas en dire plus.
Je ne sais pas si cela vous aidera, mais voici à quoi ressemblent les en-têtes de sortie dans l'application Python en texte pur:
Content-Type: multipart/alternative; boundary="10.254.26.130.1.1364.1241389770.060.1" From: User1 <user1@domain1.com> To: User2 <user2@domain1.com>,User3 <user3@domain.com> Subject: Actual subject MIME-Version: 1.0 --10.254.26.130.1.1364.1241389770.060.1 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable actual text content starting here...
Encore une fois, c'est difficile à dire sans connaître tout le contenu / les en-têtes, mais je suppose que soit a) vous avez omis les CRLF suivants avant le contenu, ou b) l'un des en-têtes précédents manquait son CRLF.
Mes excuses si cela vous mène dans une direction complètement fausse. :)
From: "User1" <user1@domain1.com>
L'en-tête De nécessite des guillemets pour la partie du nom.
Si vous définissez le " $ userEmail " variable dans votre formulaire, vous pouvez le recevoir et y répondre. $ Email_id est votre adresse email à laquelle il est envoyé.
$to=$email_id;
$headers = "From: " . strip_tags($userEmail) . "\r\n";
$headers .= "Reply-To: ". strip_tags($userEmail) . "\r\n";