0

SMTPプロトコルを使用してcakephpでメールを送信しようとしています。

これは私のemail.phpです:

class EmailConfig {

    public $smtp = array(
        'transport' => 'Smtp',
        'from' => array('account@mail.sk' => 'Me'),
        'host' => 'ip_address',
        'port' => 1234,
        'timeout' => 30,
        'username' => 'account',
        'password' => 'password',

/* dont know what these parameters below are for */
        'client' => null, 
        'log' => true,
        //'charset' => 'utf-8',
        //'headerCharset' => 'utf-8',
    );

これは私がテストに使用する関数です(リンクをクリックすると、ダミーのメールが送信されます):

    public function testSendEmail() {
        $this->autoRender = false;
                    $email = new CakeEmail('smtp');
        $email->from(array('account@mail.com' => 'Test'));
        $email->to('me@gmail.com');
        $email->subject('Test subject');
        $email->send('Dummy post');
    }

私のコードは大丈夫だと思います(私たちのオフィスではGmailが制限されているため、試してみませんでしたが、Gmailの設定では試せませんでした)。リンクをクリックした後($ this-> Html-> link('link'、array('controller' =>'users'、'action' =>'send_mail'));)何も起こりません(サイトが更新されます) tmp / error.logでも、エラーは発生しません。

私のポートは正しくないと思います。(しかし、あなたに起こるであろう他の理由は、ありがたいです)

少し掘り下げた後、これを送信する必要があるホストを見つけました。私の質問は次のとおりです。

メールサービス(Outlook 2007)がメッセージの送信に使用しているポートを見つけるにはどうすればよいですか?

私が試したこと:

  1. http://www.authsmtp.com/outlook-2007/alternate-port.htmlですが、画像2以降のすべてのダイアログは画像とは異なります。

  2. また、コマンドラインでnetstat -aを試しましたが、OUTLOOKに対応する2つのポートのいずれも機能しませんでした。

その他の注意事項:

  1. このアプリをローカルホストでコーディングします(xampp-> apache)
  2. この「extension=php_openssl.dll」行をphp.iniに追加しました(これはいくつかのチュートリアルで提案されました)が、変更は発生しませんでした(エラーもメールもありません)

アップデート:

関数の名前を「test_send_email」に変更しましたが、更新されなくなりましたが、自動レンダリングを削除してMVCにtest_send_email.ctpビューを追加すると、次のエラーが表示されます。

SMTPタイムアウト。エラー:内部エラーが発生しました。

だから私は正しいと思います、そして私は正しいポートを持っていません。

4

1 に答える 1

2

デフォルトのポートは 25 で、ここではそうです。

cmd コマンド telnet name_of_server 25 で確認できます。

Outlook 2007 では、サーバー アドレスはメッセージを右クリックすることで見つけることができます -> オプション -> ダイアログ ボックスの下にあるのは、このメッセージのヘッダーです。

于 2013-02-11T09:22:40.650 に答える