5

CAKEPHP プロジェクトで SMTP を使用して電子メールを送信しています。私のメール設定は次のとおりです

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サーバーの詳細は、既存のサーバーで正しく機能しています。どこが間違っているのかわからない

4

3 に答える 3

7

ssl や tls などの暗号化タイプを確認します (該当する場合)。

このような場合、ホスト URL は次のようになります。

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

また

'host' => 'tls://myhostingserver'
于 2012-06-26T12:45:59.067 に答える
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');       
}
于 2012-06-26T09:57:50.177 に答える
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";
    }
}

?>
于 2013-09-05T19:44:15.747 に答える