2010-01-28 4 views
8

Używam komponentu e-mailowego cakePHP do wysyłania wiadomości z mojej aplikacji. Teraz ścieżka powrotu ma coś podobnego: [email protected]Jak przepisać lub ustawić ścieżkę powrotu w elemencie CakePHP poczty e-mail?

Jak ustawić lub przepisać wartość Return-Path w wiadomościach e-mail podczas korzystania ze składnika CakePHP?

Wiem, jak to zrobić, gdy wysyłanie wiadomości e-mail za pośrednictwem "mail" w PHP, ale składnik e-mail CakePHP wydaje się brakować takiej funkcji ... lub czy brakuje mi czegoś? :)

+0

Mój problem z $ this-> pocztę elektroniczną> powrót = [email protected] było to, że został przepisany przez postfix podczas wysyłania poprzez mail/default. Musiałem wysyłać maile za pośrednictwem smtp, gdzie zwrot również nie działa - ale: jest on zastępowany przez nadawcę/od. Czy ktoś ma pojęcia, dlaczego Postfix przepisuje ścieżkę powrotu? Ciasto debugowania pokazuje zmienne ustawienie ścieżki powrotnej. –

Odpowiedz

4

Istnieje atrybut o nazwie EmailComponent :: return, który jest ścieżką powrotu dla komunikatów o błędach. Zauważ, że jest to coś innego niż atrybut replyTo.

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

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

+0

Masz całkowitą rację. Podobnie jak Jon powiedział, że to prosty $ this-> Email-> return = '[email protected]'; Próbowałem już wcześniej, ale to nie działało (tak jak teraz, ale chyba wiem, gdzie leży problem). Wygląda na to, że nasz serwer poczty zapisuje nagłówek przed wysłaniem:/ –

0

W podręczniku do ciasta, kiedy patrzyłeś, jak korzystać z reszty komponentu, powinieneś zobaczyć coś takiego. To właśnie wyznaczyło ścieżkę powrotu.

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

2

Aby zmienić ścieżkę powrotną w składniku E CakePHP zrobić tak:

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

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

i działa jak uroku;)

+0

Rozwiązuje problem zastąpienia '$ this-> Email-> return', gdy poczta jest faktycznie wysyłana. –

3

współpracownik i ja pracowaliśmy nad tym samym problemem, stwierdziliśmy, że edycja poniższej linii w php.ini dała nam naszą poprawkę:

od:

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

do:

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

podczas testowania należy wysłać e-maile do ważnej dziedzinie. to nas złapało przez kilka minut.

7

W CakePHP 2 (gdzie komponent e-mail jest w dużej mierze zastąpione przez klasę CakeEmail), można wykonać tę konfigurację wewnątrz /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]', 
     ... 
    ); 
} 

Albo jeśli trzeba robią to tylko dla pojedynczej wiadomości e-mail, coś jak to powinno działać ...

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

Po prostu fantastyczny.:) – VishalParkash

+1

Dla CakePHP 2, '-> config (array ('additionalParameters' => '-f [email protected]'))' jest linią, która wykonuje lewę. Określanie metody returnPath() nie jest konieczne. –

Powiązane problemy