2010-01-28 6 views
8

J'utilise le composant email cakePHP pour envoyer des mails depuis mon application. Maintenant, le chemin de retour a quelque chose comme [email protected]Comment réécrire ou définir le Return-Path dans le composant email cakePHP?

Comment puis-je définir ou réécrire la valeur Return-Path dans les courriels lorsque j'utilise le composant cakePHP?

Je sais comment faire lors de l'envoi de mails via 'mail' en PHP mais le composant email cakePHP semble manquer une telle fonctionnalité ... ou ai-je raté quelque chose? :)

+0

Mon problème avec le $ this-> Email-> = retour [email protected] a été qu'il a été réécrite par postfix lors de l'envoi via mail/par défaut. J'ai dû envoyer mes mails via smtp, où le retour ne fonctionne pas non plus - mais: il est remplacé par l'expéditeur/from. Est-ce que quelqu'un a une idée pourquoi postfix réécrit le chemin de retour? Le débogage de gâteau montre le paramètre de chemin de retour alterné. –

Répondre

4

Il existe un attribut appelé EmailComponent :: return qui est le chemin de retour pour les messages d'erreur. Notez que ceci est différent de l'attribut replyTo.

$this->Email->return = '[email protected]'; 

http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Email.html

+0

Vous avez totalement raison. Aussi, comme Jon a dit que c'est un simple $ this-> Email-> return = '[email protected]'; Il l'a essayé avant mais cela n'a pas fonctionné (non plus maintenant, mais je pense que je pourrais savoir où se situe le problème). On dirait que notre serveur de mails réécrit l'en-tête avant de l'envoyer:/ –

0

Creuser dans le manuel du gâteau quand vous regardiez comment utiliser le reste du composant, vous devriez avoir vu quelque chose comme ce qui suit. C'est ce qui définit le chemin du retour.

$ this-> Email-> return = '[email protected]';

2

Pour modifier le chemin de retour dans CakePHP composant Email Je aime ceci:

... 
$return_path_email = '[email protected]'; 
... 

$this->Email->additionalParams = '-f'.$return_path_email; 

et il fonctionne comme un charme;)

+0

Résout le problème de '$ this-> Email-> return' écrasé lorsque le courrier est réellement envoyé. –

3

Un collègue et moi travaillaient sur ce même problème, nous avons trouvé que modifier la ligne suivante dans php.ini nous a donné notre solution:

de:

sendmail_path = /usr/sbin/sendmail -t -i 

à:

sendmail_path = /usr/sbin/sendmail -t -i -f [email protected] 

lors du test assurez-vous d'envoyer vos e-mails à un domaine valide. Cela nous a pris pendant quelques minutes.

7

Dans CakePHP 2 (où la composante e-mail est en grande partie remplacée par la classe CakeEmail), vous pouvez faire cette configuration à l'intérieur /app/Config/email.php:

class EmailConfig { 
    public $email = array(
     ... 
     // The next line attempts to create a 'Return-path' header 
     'returnPath' => '[email protected]', 

     // But in some sendmail configurations (esp. on cPanel) 
     // you have to pass the -f parameter to sendmail, like this 
     'additionalParameters' => '[email protected]', 
     ... 
    ); 
} 

Ou si vous avez besoin le faire juste pour un seul e-mail, quelque chose comme cela devrait fonctionner ...

App::uses('CakeEmail', 'Network/Email'); 
$email = new CakeEmail('MyConfig'); 
$email->from(...) 
     ->to(...) 
     ->subject(...) 
     ->returnPath('[email protected]') 
     // Haven't tested this next line, but may possibly work? 
     ->config(array('additionalParameters' => '[email protected]')) 
     ->send(); 
+0

Juste génial.:) – VishalParkash

+1

Pour CakePHP 2, '-> config (array ('additionalParameters' => '-f [email protected]'))' est la ligne qui fait le tour. Spécifier returnPath() n'est pas nécessaire. –

Questions connexes