电子邮件中的Cakephp 2.0 SMTP设置无法正常工作

时间:2012-06-26 08:04:49

标签: cakephp smtp cakephp-2.0

我正在使用SMTP在我的CAKEPHP项目中发送电子邮件。 我的电子邮件配置如下

class EmailConfig {

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

和我的邮件功能代码如下

    $email    = new CakeEmail('Smtp');
    $result   = $email->template('welcome_mail','default')
                       ->emailFormat('html')
                        ->to($to_email)
                        ->from('contact@mydomainname.com')
                        ->subject('Welcome to my domain name')
                        ->viewVars($contents);

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

    }

当我发送邮件时,它抛出以下错误 SMTP超时。我的SMTP服务器详细信息是正确的,它在现有服务器中正常工作。我不知道我哪里错了

3 个答案:

答案 0 :(得分:7)

检查加密类型(如果适用),例如ssl或tls

在这种情况下,您的主机网址应该如下所示

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

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

答案 1 :(得分:1)

如果您的SMTP服务器具有SSL,则必须在php_openssl中启用php.ini才能使用此服务。 您可以使用此代码进行测试

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

答案 2 :(得分:0)

除了这里已经存在的东西,必须加载模块。我发现有些服务器阻塞了一些端口。我用这个脚本来测试一些服务器:

<?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";
    }
}

?>