cakephp 2.0 smtp email

2019-07-20 15:36发布

I am trying to send a email message using CakePhp 2.0. in my controller i use this code (i know it's fine, i took it from 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);

and in app/config/email.php i have this config :

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

the problem is the server answers with :

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

the account name is correct, as is the password. The config works when loading it up in thunderbird, the connection to the smtp server is set up as :

server name : mail.myServer.com
port : 587
connection security : STARTTLS
authentication : normal password
user name : mYaccount

6条回答
成全新的幸福
2楼-- · 2019-07-20 16:17

Give the following a try:

 <?php
class EmailConfig {
    public $myConfig = array(
        'host' => 'ssl://mail.myServer.com',
        'port' => 465,
        'username' => 'mYaccount',
        'password' => 'secret',
        'transport' => 'Smtp'
    );
}
?>
查看更多
Ridiculous、
3楼-- · 2019-07-20 16:22

Below code is working for me over GoDaddy server using CakePHP SMTP Email:

Email.php file inside config folder - CakePHP 2.4 MVC version:

    // 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',
    );

And here is the controller file code below:

    // 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 قبل الميلاد، مما يجعله أكثر من');

Hope it helps !

Thanks

查看更多
三岁会撩人
4楼-- · 2019-07-20 16:23
public $smtp = array(
        .................,
        'tls'   =>  true
    );
查看更多
冷血范
5楼-- · 2019-07-20 16:23

From the CakePHP Cookbook:

You can configure SSL SMTP servers, like GMail. To do so, put the 'ssl://' at prefix in the host and configure the port value accordingly. Example:

class EmailConfig {
public $gmail = array(
    'host' => 'ssl://smtp.gmail.com',
(...)
查看更多
Emotional °昔
6楼-- · 2019-07-20 16:23

Make sure your

php_openssl.dll

extension is running.

You can check it on thephp.ini file.

If you are using XAMPP php.ini should be on 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
查看更多
看我几分像从前
7楼-- · 2019-07-20 16:27

Are you certain your SMTP supports tls? Try sending the ehlo command:

telnet 1.2.3.4 25
ehlo testing

You should see something like:

250-STARTTLS

in the list.

If you see it, then it is most likely not enabled. You will need to enable it. If you do not see it, you will need to add it.

查看更多
登录 后发表回答