cakephp 2.0 smtp电子邮件

时间:2012-02-18 13:54:49

标签: php smtp cakephp-2.0 starttls

我正在尝试使用CakePhp 2.0发送电子邮件。在我的控制器中,我使用此代码(我知道它很好,我从the cookbook获取它):

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.

帐户名称正确,密码也是如此。配置在thunderbird中加载时,与smtp服务器的连接设置为:

服务器名称:mail.myServer.com
港口:587
连接安全性:STARTTLS
验证:普通密码
用户名:mYaccount

6 个答案:

答案 0 :(得分:2)

您确定您的SMTP支持吗?尝试发送ehlo命令:

telnet 1.2.3.4 25
ehlo testing

您应该看到类似的内容:

250-STARTTLS
列表中的

如果你看到它,那很可能没有启用。您需要启用它。如果您没有看到它,则需要添加它。

答案 1 :(得分:1)

以下代码使用CakePHP SMTP电子邮件在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 قبل الميلاد، مما يجعله أكثر من');

希望它有所帮助!

由于

答案 2 :(得分:1)

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

答案 3 :(得分:0)

来自CakePHP食谱:

  

您可以配置SSL SMTP服务器,例如GMail。为此,请将'ssl://'放在主机的前缀中,并相应地配置端口值。例如:

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

答案 4 :(得分:0)

尝试以下内容:

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

答案 5 :(得分: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