2012-06-26 20 views
5

Tôi đang sử dụng SMTP để gửi email trong Dự án CAKEPHP của mình. email cấu hình của tôi như sauCakephp 2.0 Cài đặt SMTP trên Email không hoạt động

class EmailConfig { 

    public $Smtp = array(
     'transport' => 'Smtp', 
     'from' => array('[email protected]' => 'domainname.com'), 
     'host' => 'myhostingserver', 
     'port' => 2525, 
     'timeout' => 60, 
     'username' => '[email protected]', 
     'password' => 'secret', 
     'client' => null, 
     'log' => false 
    ); 

và mã Chức năng Mail của tôi như sau

$email = new CakeEmail('Smtp'); 
    $result = $email->template('welcome_mail','default') 
         ->emailFormat('html') 
         ->to($to_email) 
         ->from('[email protected]') 
         ->subject('Welcome to my domain name') 
         ->viewVars($contents); 

    if($email ->send('Smtp')) 
    { 
     echo ('success'); 

    } 

Trong khi tôi đang gửi thư ném nó sau thời gian chờ SMTP lỗi . Chi tiết máy chủ SMTP của tôi là chính xác hoạt động của nó trong một máy chủ hiện có. Tôi không biết mình đang ở đâu sai

Trả lời

6

Kiểm tra loại mã hóa (nếu có), ví dụ: SSL hoặc TLS

URL máy chủ của bạn sẽ giống như thế này trong trường hợp như vậy

'host' => 'ssl://myhostingserver' 

hoặc

'host' => 'tls://myhostingserver' 
1

Nếu máy chủ SMTP của bạn có SSL, bạn phải bật php_openssl trong php.ini để sử dụng dịch vụ này. Bạn có thể sử dụng mã này để kiểm tra

if(!in_array('openssl',get_loaded_extensions())){ 
    die('you have to enable php_openssl in php.ini to use this service');  
} 
0

bên cạnh những gì ở đây đã được sugested ở đây là các module phải được nạp. tôi thấy rằng một số máy chủ có một số cổng bị chặn. tôi đã sử dụng tập lệnh này để kiểm tra một số máy chủ:

<?php 

if(!in_array('openssl',get_loaded_extensions())){ 
    die('you have to enable php_openssl in php.ini to use this service');  
} else { 
    echo "php_openssl in php.ini is enabled <br />"; 
} 

// fill out here the smpt server that you want to use 
$host = 'ssl://smtp.gmail.com'; 
// add here the port that you use for for the smpt server 
$ports = array(80, 465); 

foreach ($ports as $port) 
{ 
    $connection = @fsockopen($host, $port); 
    if (is_resource($connection)) 
    { 
     echo $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.<br />' . "\n"; 
     fclose($connection); 
    } else { 
     echo $host . ':' . $port . ' is not responding.<br />' . "\n"; 
    } 
} 

?>