2012-02-18 164 views
2

我想用CakePhp 2.0發送電子郵件。在我的控制器我用這個代碼(我知道這是很好,我把它從the cookbook):cakephp 2.0 smtp電子郵件

App::uses('CakeEmail', 'Network/Email'); 
$email = new CakeEmail("myConfig"); 
$email->from(array('[email protected]' => '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
認證:普通口令
用戶名:我的帳戶

+0

如果你想看到發送SMTP命令一些CakePHP的代碼,請上網:http://stackoverflow.com/questions/5294751/using-gmails-outgoing-smtp-from-php -using-tls – 2013-01-18 19:51:49

回答

0

從CakePHP的食譜:

您可以配置SSL SMTP服務器,例如Gmail。爲此,請在主機的前綴處添加'ssl://',並相應地配置端口值。例如:

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

如果我這樣做,我只是'無法連接到SMTP服務器。' – Bogdan 2012-02-18 14:25:34

2

你確定你的SMTP支持TLS?嘗試發送EHLO命令:

telnet 1.2.3.4 25 
ehlo testing 

你應該看到:

250-STARTTLS 

在列表中。

如果你看到它,那麼它很可能沒有啓用。您需要啓用它。如果你沒有看到它,你需要添加它。

+0

好吧,我在列表中看到它,我如何檢查它是否啓用? (請記住它正在使用電子郵件客戶端,而STARTTLS是電子郵件客戶端正在使用的報告) – Bogdan 2012-02-19 19:35:43

+0

然後,您應該能夠創建主機'ssl:// mail.myServer.com'並且它應該連接。如果沒有,您可能需要驗證您使用的是正確的用戶名和密碼。你是否嘗試將用戶名作爲電子郵件地址? 'username @ myServer.com' – 2012-02-20 17:22:47

0

給一個嘗試以下操作:

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

確保您

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 
1

下面的代碼在GoDaddy的服務器使用CakePHP SMTP電子郵件爲我工作:

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' => '[email protected]', 
     '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('[email protected]' => 'App Name')) 
     ->sender('[email protected]', 'App Name') 
     ->to(array($email)) 
     ->bcc(array('[email protected]')) 
     ->subject('Test Email from GoDaddy') 
     ->emailFormat('both') 
     ->send($hash.'<br><strong>My</strong> message 45 قبل الميلاد، مما يجعله أكثر من'); 

希望它能幫助!

感謝

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

添加一些解釋並回答這個答案如何幫助OP解決當前問題 – 2016-01-21 11:27:50