2011-10-27 40 views
5

Tôi đang cố gửi email từ tài khoản gmail bằng cài đặt CakEmail và SMTP.CakePHP-2.0: Làm cách nào để gửi email từ tài khoản gmail bằng cài đặt CakEmail và SMTP?

Sẽ thật tuyệt nếu ai đó nói với quy trình từng bước phải làm gì.

Tôi đã thêm những điều sau đây trong ứng dụng/Config/email.php =>

<?php 
class EmailConfig { 
    public $smtp = array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'username' => '[email protected]', 
     'password' => 'secret' 
    ); 
} 

Bây giờ làm thế nào tôi có thể gửi thư điện tử cho bất kỳ tài khoản email từ "[email protected]"?

Đó là CakePHP-2.0

Trả lời

9

Từ các tài liệu:

Bạn có thể cấu hình máy chủ SSL SMTP, như GMail. Để làm như vậy, hãy đặt 'ssl: //' tại tiền tố trong máy chủ và định cấu hình giá trị cổng cho phù hợp. Ví dụ:

<?php 
class EmailConfig { 
    public $gmail = array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'username' => '[email protected]', 
     'password' => 'secret' 
    ); 
} 

http://book.cakephp.org/2.0/en/core-utility-libraries/email.html?highlight=cakeemail#CakeEmail

2

Chỉ cần đặt from:

<?php 
$email = new CakeEmail(); 
$email->from(array('[email protected]' => 'Your Name')); 
$email->to('[email protected]'); 
$email->subject('Sent from Gmail'); 
$email->send('My message'); // or use a template etc 

nên làm điều đó.

Bạn cũng có thể muốn đặt sender; Tôi không phải 100% nhưng tôi tưởng tượng nó sẽ hữu ích khi gửi email "từ" gmail qua trang web của bạn; có lẽ để ngăn chặn các email được chọn là thư rác.

$email->sender('[email protected]', 'MyApp emailer');

+0

Làm việc như một nét duyên dáng –

0

Tôi hiện đang sử dụng tài khoản gmail để gửi thư đi. Tôi đang sử dụng các mẫu và chức năng thiết lập email có thể tái sử dụng. Đây là bản sao mã làm việc của tôi:

// app/controllers/users_controller.php 
function sendemail($subject, $body, $to, $template) { 
    $this->Email->smtpOptions = array(
     'port'=>'465', 
     'timeout'=>'30', 
     'host' => 'ssl://smtp.gmail.com', 
     'username'=>'[email protected]', 
     'password'=>'secret', 
    ); 
    $this->Email->delivery = 'smtp'; 
    //$this->Email->delivery = 'debug'; 
    $this->Email->from = 'Username <[email protected]>'; 
    $this->Email->to  = $to; 
    $this->Email->subject = $subject; 
    $this->set('body', $body); 
    $this->set('smtp_errors', $this->Email->smtpError); 
    $this->Email->send($content, $template); 
} 

// app/controllers/users_controller.php 
// Excerpt from new user method in users controller: 
function add() { 
    // ...other stuff 
    $body['user'] = $user['User']['username']; 
    $this->sendemail('Domain.com New User Signup!', $body, '[email protected]', 'newuser'); 
    // ...other stuff 
} 

// app/views/elements/email/text/newuser.ctp 
Everyone, 
Another new user just signed up for Domain. Stats below: 
User: <?php echo $body['user'] . "\r\r"; ?> 
Just thought you'd like to know :) 
-Janet 
+0

Đây là thành phần email cũ hơn. – shibly

0

Sử dụng thành phần Swiftmailer; đây là thành phần dễ sử dụng nhất.

http://bakery.cakephp.org/articles/mhuggins/2008/06/11/improved-swiftmailer-component

Có một số thay đổi mà bạn cần phải làm trong khi sử dụng điều này với CakePHP 2.0 trở đi. CakePHP 2.0 cung cấp thư mục xem 'Email', được sử dụng để lưu trữ tất cả các mẫu email.

Những thay đổi trong thành phần:

  1. Thay đổi tất cả var tờ khai để public
  2. Thay đổi public $layout = 'Emails'; để public $viewPath = '/Emails';

  3. Thay đổi con đường render trong _getBodyText:

$body = $this->controller->render($this->viewPath . DS . 'text' . DS . $view, $this->layout . DS . 'text'.DS.'default');

  1. Thay đổi render đường dẫn trong _getBodyHtml:

$body = $this->controller->render($this->viewPath . DS . 'html' . DS . $view, $this->layout . DS . 'html'.DS.'default');

  1. luận ra các dòng:

$bodyText = $this->_getBodyText($view); $message->setBody($bodyText, "text/plain");

Thành phần Swiftmailer gửi một email trống nếu bạn đặt cả HTML & TEXT hoạt động. Nó đọc từ cả hai chế độ xem email & thêm nội dung cho văn bản. Đó là lý do để nhận xét hai dòng này nếu bạn muốn gửi email html.

Lý do thứ hai là nếu cả hai được kích hoạt & bạn có nội dung trong cả hai email.html.ctp & email.text.ctp file, nó tạo ra một vấn đề tiêu đề ở chỗ chỉ có định dạng văn bản được hiển thị trong email (trên thực tế cả các định dạng được trình bày trong phần đầu, nhưng nó ngăn chặn phần html & hiển thị phần văn bản).

3

Cấu hình bên phải là:

public $gmail = array(
    'host' => 'ssl://smtp.gmail.com', 
    'port' => 465, 
    'username' => '[email protected]', 
    'password' => 'secret', 
    'transport' => 'Smtp' 
); 

Vì vậy, đừng quên các yếu tốvận chuyển.

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