2010-02-17 46 views
6

Tôi làm việc trên biểu mẫu theo đó khi người dùng nhập vào tài khoản email của họ và nhấp vào gửi, một email sẽ được gửi đến tài khoản email của họ.Gửi email bằng cách sử dụng Zend Framework và PHP

Tôi đã làm mọi thứ. Chỉ cần nó không gửi email vào tài khoản của tôi. Ai có ý tưởng gì không? Có một cấu hình mà tôi bỏ ra hay cái gì đó?

Đây là mẫu từ bộ điều khiển của tôi:

public function retrieveemailAction(){ 

    $users = new Users(); 
    $email = $_POST['email'];     
    $view = Zend_Registry::get('view'); 

    if($users->checkEmail($_POST['email'])) { 

     // The Subject 
     $subject = "Email Test"; 

     // The message 
     $message = "this is a test";    

     // Send email 
     // Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise. 
     // Use if command to display email message status 
     if(mail($email, $subject, $message, $headers)) { 
      $view->operation = 'true'; 
     }    
    } else { 
     $view->operation = 'false'; 
    } 

    $view->render('retrieve.tpl'); 
} 
+1

bạn sẽ cần phải có cấu hình đặc biệt được thực hiện nếu bạn đang thử nghiệm mã của bạn trên localhost. –

+0

ý của bạn là gì? có một ví dụ hay gì đó? – Ryan

Trả lời

1

Trước hết tôi sẽ chuyển sang sử dụng Zend_Mail. Thứ hai tôi sẽ sử dụng một tài khoản thư thực sự trên một máy chủ smtp một nơi nào đó và gửi từ đó. Rất nhiều lần có những hạn chế về việc gửi từ chính máy chủ, nhưng việc sử dụng một máy chủ thư thực sự thường sửa lỗi này.

26

tôi khuyên bạn nên sử dụng Zend_Mail thay vì mail(). Nó xử lý rất nhiều thứ tự động và chỉ hoạt động tốt.

Bạn có máy chủ SMTP không? Cố gắng gửi thư mà không có máy chủ SMTP của riêng bạn có thể làm cho thư không được gửi đi.

Đây là những gì tôi sử dụng dịch vụ gửi thư sử dụng Zend_Mail và Gmail:

Trong Bootstrap.php, tôi cấu hình một vận chuyển thư mặc định:

protected function _initMail() 
{ 
    try { 
     $config = array(
      'auth' => 'login', 
      'username' => '[email protected]', 
      'password' => 'password', 
      'ssl' => 'tls', 
      'port' => 587 
     ); 

     $mailTransport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 
     Zend_Mail::setDefaultTransport($mailTransport); 
    } catch (Zend_Exception $e){ 
     //Do something with exception 
    } 
} 

Sau đó, gửi một email tôi sử dụng đoạn mã sau:

//Prepare email 
$mail = new Zend_Mail(); 
$mail->addTo($email); 
$mail->setSubject($subject); 
$mail->setBody($message); 
$mail->setFrom('[email protected]', 'User Name'); 

//Send it! 
$sent = true; 
try { 
    $mail->send(); 
} catch (Exception $e){ 
    $sent = false; 
} 

//Do stuff (display error message, log it, redirect user, etc) 
if($sent){ 
    //Mail was sent successfully. 
} else { 
    //Mail failed to send. 
} 
1

Trong dòng $mail->setBody($message);, đổi thành $mail->setBodyText($message);

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