За последние 24 часа нас посетили 55458 программистов и 1715 роботов. Сейчас ищут 922 программиста ...

Не отправляется письмо

Тема в разделе "Yii", создана пользователем Dimon2x, 5 апр 2018.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Если 'useFileTransport' => false, изменить на true, то будет написано, что сообщение отправлено, но оно не приходит, если изменить на false, то будет ошибка

    Swift_TransportException

    Connection could not be established with host

    PHP:
    1. <?php
    2. return [
    3.     'components' => [
    4.         'db' => [
    5.             'class' => 'yii\db\Connection',
    6.             'dsn' => 'mysql:host=localhost;dbname=images',
    7.             'username' => 'root',
    8.             'password' => '',
    9.             'charset' => 'utf8',
    10.         ],
    11.         'mailer' => [
    12.             'class' => 'yii\swiftmailer\Mailer',
    13.             'viewPath' => '@common/mail',
    14.             // send all mails to a file by default. You have to set
    15.             // 'useFileTransport' to false and configure a transport
    16.             // for the mailer to send real emails.
    17.             'useFileTransport' => false,
    18.            
    19.             'transport' => [
    20.                 'class' => 'Swift_SmtpTransport',
    21.                 'host' => 'здесь адрес, на который должно прийдти письмо',
    22.                 'username' => '', //это можно оставить пустым
    23.                 'password' => '',
    24.                 'port' => '587', //это можно оставить пустым
    25.                 'encryption' => 'tls',
    26.              ],
    27.         ],
    28.     ],
    29. ];

    --- Добавлено ---
    и почему для хоста, многие пописывают smtp.mail.ru, я это никак понять не могу, у всех же свой адрес
     
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    с чего ты это взял?
    Давай начнём сначала, ты читал документацию?
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @acho читал, там всё плохо описано
     
  4. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Dimon2x, ну смотри, насколько я вижу - ты показал конфиги. Конфиги описывают настройки, они ничего не отправляют. Следовательно, ты там можешь ничего не указывать в мейлере, если у тебя на сервере настроен почтовый сервер, либо работать по smtp с почтовым сервисом. Ну т.е. тут ты должен настройки к smtp прописать. Хост - smtp.mail.ru - это почтовый сервер мейла. Логин и пароль - это твои логин и пароль от почтового ящика на мейле, от имени кого ты будешь отсылать письма.
    А саму отправку письма производить в коде, создавая класс этого мейлера и используя его методы
    --- Добавлено ---
    PHP:
    1. Yii::$app->mailer->compose('contact/html')
    2.      ->setFrom('from@domain.com') //вот тут желательно описать тот же ящик, что ты указывал в конфигах. Это предположение, но скорее всего дельное.
    3.      ->setTo($form->email) //это кому ты отправляешь письмо
    4.      ->setSubject($form->subject) //указываешь тему письма
    5.      ->send(); // ну и отправляешь
    --- Добавлено ---
    'useFileTransport'=>false, если я не ошибаюсь, как раз включает ошибки. Больше эта штука ни на что не способна. А, не, при включённом ещё письма не отправляются вроде, а в папку складываются
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    у меня на локалхосте
     
  6. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    сделай лучше себе тогда ящик на мейле, например. В конфиге у тебя тогда будет:
    PHP:
    1. <?php
    2. return [
    3.     'components' => [
    4.         'db' => [
    5.             'class' => 'yii\db\Connection',
    6.             'dsn' => 'mysql:host=localhost;dbname=images',
    7.             'username' => 'root',
    8.             'password' => '',
    9.             'charset' => 'utf8',
    10.         ],
    11.         'mailer' => [
    12.             'class' => 'yii\swiftmailer\Mailer',
    13.             'viewPath' => '@common/mail',
    14.             // send all mails to a file by default. You have to set
    15.             // 'useFileTransport' to false and configure a transport
    16.             // for the mailer to send real emails.
    17.             'useFileTransport' => false,
    18.          
    19.             'transport' => [
    20.                 'class' => 'Swift_SmtpTransport',
    21.                 'host' => 'smtp.mail.ru',
    22.                 'username' => 'superdimon@mail.ru', //это можно оставить пустым
    23.                 'password' => 'superpass',
    24.                 'port' => '465', //это можно оставить пустым
    25.                 'encryption' => 'tls',
    26.              ],
    27.         ],
    28.     ],
    29. ];
    --- Добавлено ---
    только я не помню, username указывается с доменом или без. Попробуй по-разному. Соответственно включи ошибки. Ну и в каком-нибудь контроллере попробуй выполнить
    PHP:
    1. Yii::$app->mailer->compose('contact/html')
    2.      ->setFrom('superdimon@mail.ru') //вот тут желательно описать тот же ящик, что ты указывал в конфигах. Это предположение, но скорее всего дельное.
    3.      ->setTo('kuda_otpravit@mail.ru') //это кому ты отправляешь письмо
    4.      ->setSubject('Это офигительно прикольное письмо!') //указываешь тему письма
    5.      ->send();
     
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    @acho потом попробую
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Такого бреда в конфиге точно не должно быть. Если SMTP-транспорт используется, то здесь как раз хост smtp сервера. В доках всё хорошо описано, не надо. У Yii одна из лучших документаций из тех, что я читал. Плюс здесь почитай, yii почту не свою использует, а вот это: https://swiftmailer.symfony.com/docs/introduction.html