簡體   English   中英

cakephp 2.0 smtp電子郵件

[英]cakephp 2.0 smtp email

我正在嘗試使用CakePhp 2.0發送電子郵件。 在我的控制器中,我使用以下代碼(我知道這很好,我從菜譜中獲取了它):

App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail("myConfig");
$email->from(array('from@example.com' => 'From Example'));
$email->to($to);
$email->subject($msgtitle);
$ok = $email->send($content);

app/config/email.php我有以下配置:

<?php
class EmailConfig {
    public $myConfig = array(
        'host' => 'mail.myServer.com',
        'port' => 587,
        'username' => 'mYaccount',
        'password' => 'secret',
        'transport' => 'Smtp'
    );
}
?>

問題是服務器回答:

SMTP Error: 530 5.7.0 Must issue a STARTTLS command first.

帳戶名正確,密碼正確。 該配置在將其加載到雷鳥中時起作用,與smtp服務器的連接設置為:

服務器名稱:mail.myServer.com
港口:587
連接安全性:STARTTLS
身份驗證:普通密碼
用戶名:mYaccount

您確定您的SMTP支持tls嗎? 嘗試發送ehlo命令:

telnet 1.2.3.4 25
ehlo testing

您應該看到類似以下內容:

250-STARTTLS

在列表中。

如果看到它,則很可能未啟用它。 您將需要啟用它。 如果看不到它,則需要添加它。

以下代碼使用CakePHP SMTP Email通過GoDaddy服務器為我工作:

config文件夾中的Email.php文件-CakePHP 2.4 MVC版本:

    // for Live Server GoDaddy.com domain
    public $smtp = array(
        'transport' => 'Smtp',
        'host' => 'ssl://smtpout.asia.secureserver.net', <-- important
        'port' => 465, <-- important
        #'timeout' => 30,
        'username' => 'no-reply@godaddy-domain.com',
        'password' => 'password',
        #'tls' => false,
        #'log' => false,
        'charset' => 'utf-8',
        'headerCharset' => 'utf-8',
    );

這是下面的控制器文件代碼:

    // Controller Code to Send Actual Email
    // email configuration
    $Email = new CakeEmail('smtp');
    $Email->from(array('no-reply@godaddy-domain.com' => 'App Name'))
        ->sender('no-reply@godaddy-domain.com', 'App Name')
        ->to(array($email))
        ->bcc(array('xyz@xyz.com'))
        ->subject('Test Email from GoDaddy')
        ->emailFormat('both')
        ->send($hash.'<br><strong>My</strong> message 45 قبل الميلاد، مما يجعله أكثر من');

希望能幫助到你 !

謝謝

public $smtp = array(
        .................,
        'tls'   =>  true
    );

嘗試以下操作:

 <?php
class EmailConfig {
    public $myConfig = array(
        'host' => 'ssl://mail.myServer.com',
        'port' => 465,
        'username' => 'mYaccount',
        'password' => 'secret',
        'transport' => 'Smtp'
    );
}
?>

確保你的

php_openssl.dll

擴展程序正在運行。

您可以在php.ini文件中檢查它。

如果您使用的是XAMPP,則php.ini應該位於C:\\xampp\\php

   php.ini:

;extension=php_oci8.dll      ; Use with Oracle 10gR2 Instant Client
;extension=php_oci8_11g.dll  ; Use with Oracle 11gR2 Instant Client
extension=php_openssl.dll
;extension=php_pdo_firebird.dll

從CakePHP Cookbook:

您可以配置SSL SMTP服務器,例如GMail。 為此,請將“ ssl://”放在主機的前綴處,並相應地配置端口值。 例:

 class EmailConfig { public $gmail = array( 'host' => 'ssl://smtp.gmail.com', (...) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM