2010-01-28 24 views
8

Tôi đang sử dụng thành phần email CakePHP để gửi thư từ ứng dụng của mình. Bây giờ đường dẫn trả lại có dạng như [email protected]Làm thế nào để viết lại hoặc thiết lập đường dẫn trả về trong thành phần email CakePHP?

Làm cách nào để đặt hoặc viết lại giá trị Đường dẫn trả về trong email khi sử dụng thành phần CakePHP?

Tôi biết cách thực hiện khi gửi thư qua 'thư' trong PHP nhưng thành phần email cakePHP có vẻ thiếu một tính năng như vậy ... hoặc tôi thiếu gì đó? :)

+0

Vấn đề của tôi với $ this-> Email-> return = [email protected] là nó được viết lại bằng postfix khi gửi qua thư/mặc định. Tôi đã phải gửi thư của tôi thông qua smtp, nơi sự trở lại cũng không hoạt động - nhưng: nó được replcaed với người gửi/từ. Có ai có đầu mối tại sao postfix ghi lại đường dẫn trả về không? Gỡ lỗi bánh không hiển thị cài đặt đường dẫn trả lại thay thế. –

Trả lời

4

Có một thuộc tính được gọi là EmailComponent :: return là đường dẫn trả về cho các thông báo lỗi. Lưu ý rằng điều này khác với thuộc tính replyTo.

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

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

+0

Bạn hoàn toàn đúng. Cũng giống như Jon nói nó đơn giản là $ this-> Email-> return = '[email protected]'; Nó đã thử nó trước nhưng nó không hoạt động (không phải bây giờ, nhưng tôi nghĩ rằng tôi có thể biết được vấn đề nằm ở đâu). Có vẻ như mailserver của chúng tôi đang viết lại tiêu đề trước khi gửi:/ –

0

Đào vào hướng dẫn sử dụng bánh khi bạn đang xem cách sử dụng phần còn lại của thành phần bạn sẽ thấy như sau. Đây là những gì thiết lập Return-Path.

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

2

Để thay đổi đường dẫn trở lại trong phần Email CakePHP tôi làm như thế này:

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

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

và nó hoạt động như quyến rũ;)

+0

Giải quyết vấn đề '$ this-> Email-> return' bị ghi đè khi thư thực sự được gửi. –

3

Một đồng nghiệp và tôi đang làm việc về cùng một vấn đề này, chúng tôi thấy rằng việc chỉnh sửa dòng sau trong php.ini đã cho chúng tôi sửa lỗi của chúng tôi:

từ:

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

tới:

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

khi kiểm tra hãy chắc chắn để gửi email của bạn vào một tên miền hợp lệ. điều này đã bắt chúng tôi trong vài phút.

7

Trong CakePHP 2 (nơi Component Email được thay thế phần lớn bởi lớp CakeEmail), bạn có thể làm cấu hình này bên /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]', 
     ... 
    ); 
} 

Hoặc nếu bạn cần làm điều đó chỉ cho một email duy nhất, một cái gì đó như thế này sẽ hoạt động ...

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

Thật tuyệt vời.:) – VishalParkash

+1

Đối với CakePHP 2, '-> config (mảng ('additionalParameters' => '-f [email protected]'))' là dòng thực hiện thủ thuật. Chỉ định returnPath() là không cần thiết. –

Các vấn đề liên quan