2010-12-28 1 views
2

J'utilise la bibliothèque PHP Pear Mail_Mime pour envoyer des e-mails. Dans mon script, je définis l'en-tête "From:" avant d'envoyer le message. Tout fonctionne correctement sur un serveur exécutant Mac OS X (qui utilise probablement sendmail comme expéditeur, bien que je ne sois pas sûr à 100%). Lors de l'envoi d'un e-mail de test, le champ "De:" indique l'expéditeur correct. Cependant, si j'exécute le même script sur un serveur Linux avec Exim4 comme expéditeur, l'email est toujours envoyé mais l'en-tête "From:" apparaît par défaut au lieu de celui que j'ai spécifié dans le script.Exim remplace l'en-tête "from" lors de l'envoi d'un e-mail MIME à partir de PHP

J'ai essayé de définir l'option "-f [from email address]" dans les "paramètres supplémentaires" pour la fonction mail de PHP, mais cela semble n'avoir aucun effet.

Quelqu'un peut-il me dire comment je pourrais obtenir l'en-tête de fonctionner correctement avec Exim?

Tout conseil est grandement apprécié.

Cheers, Tom

EDIT: voici le code dans le cas où quelqu'un est intéressé à regarder.

 

<?php 

    include_once('Mail.php'); 
    include_once('Mail/mime.php'); 


    $subject = "mime mail test"; 
    $from = "[email protected]"; 
    $to = "[email protected]"; 
    $visitor_email = $from; 

    $message = new Mail_mime(); 
    $message->setTXTBody("hallo there!"); 


    $body = $message->get(); 
    $extraheaders = array("From"=>$from, "Subject"=>$subject,"Reply-To"=>$visitor_email); 
    $headers = $message->headers($extraheaders); 

    $mail = Mail::factory("mail"); 
    $result = $mail->send($to, $headers, $body, "", "-f [email protected] -r [email protected]"); 

    print_r($result); 

?> 


 
+1

Essayez de définir explicitement l'en-tête 'Return-path' sur le même en-tête de réponse et/ou de. Aussi, 'Mail :: send' ne supporte que les 3 premiers arguments que vous fournissez en supposant que c'est la classe PEAR Mail que vous utilisez. – prodigitalson

+0

Ah, merci - je ne m'en suis pas rendu compte à propos de la classe mail PEAR. – Tom

+0

Il s'avère qu'il s'agit d'un doublon de http://stackoverflow.com/questions/4663040/from-email-address-changes-after-email-is-sent-gmail-postfix-relay/ – dkarp

Répondre

4

Vous envoyez via la ligne de commande (vs SMTP). Exim autorise uniquement les expéditeurs approuvés à utiliser l'option -f. Soit:

  • Modifier à utiliser SMTP (qui vous permettra d'utiliser quel que soit l'expéditeur que vous voulez à condition que vous êtes autorisé à envoyer des e-mail à tous (ce qui signifie habituellement IP ou des contrôles basés sur une authentification)
  • Envoyer d'un utilisateur qui est digne de confiance (comme la racine ou l'utilisateur Exim)
  • Ajouter à l'utilisateur d'envoyer le courrier à la liste des utilisateurs de confiance dans la configuration Exim, qui ressemblerait à quelque chose comme ceci:

    trusted_users = racine: apache : www: exim: 60001

+0

J'ai essayé à la fois l'approche trusted_users et passer également à SMTP, mais le problème persiste. Je pense que j'ai peut-être découvert le problème, qui est que l'exim est configuré pour envoyer des emails via GMail, et apparemment configuré pour envoyer tous les emails en tant qu'utilisateur. Cependant, je ne suis toujours pas sûr de ce qui doit être changé pour résoudre le problème. Encore, merci beaucoup pour l'info. – Tom

+0

S'il vous plaît voir http://stackoverflow.com/questions/4663040/from-email-address-changes-after-email-is-sent-gmail-postfix-relay/4673989#4673989 – dkarp