cakephp 2.0 smtp электронная почта - PullRequest
2 голосов
/ 18 февраля 2012

Я пытаюсь отправить сообщение электронной почты с использованием 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.

имя учетной записи верное, как и пароль.Конфигурация работает при загрузке в Thunderbird, подключение к серверу SMTP настроено как:

имя сервера: mail.myServer.com
порт: 587
безопасность подключения: STARTTLS
аутентификация: обычный пароль
имя пользователя: mYaccount

Ответы [ 6 ]

2 голосов
/ 19 февраля 2012

Вы уверены, что ваш SMTP поддерживает TLS? Попробуйте отправить команду ehlo:

telnet 1.2.3.4 25
ehlo testing

Вы должны увидеть что-то вроде:

250-STARTTLS

в списке.

Если вы видите это, то, скорее всего, оно не включено. Вам нужно будет включить его. Если вы его не видите, вам нужно будет его добавить.

1 голос
/ 21 января 2016
public $smtp = array(
        .................,
        'tls'   =>  true
    );
1 голос
/ 21 апреля 2015

Ниже код работает для меня на сервере GoDaddy с использованием CakePHP SMTP Email:

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

Надеюсь, это поможет!

Спасибо

0 голосов
/ 22 июня 2013

Убедитесь, что ваше расширение

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
0 голосов
/ 21 июня 2012

Попробуйте следующее:

 <?php
class EmailConfig {
    public $myConfig = array(
        'host' => 'ssl://mail.myServer.com',
        'port' => 465,
        'username' => 'mYaccount',
        'password' => 'secret',
        'transport' => 'Smtp'
    );
}
?>
0 голосов
/ 18 февраля 2012

Из CakePHP Cookbook:

Вы можете настроить SSL SMTP-серверы, такие как GMail.Для этого поместите префикс «ssl: //» в хост и настройте значение порта соответствующим образом.Пример:

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