it-swarm-eu.dev

Jak korzystać z swiftMailer w Yii2

Nie mogę w końcu zrozumieć, jak korzystać z rozszerzenia swiftMailer w Yii2. Sądząc po tym, że na ten temat nie znalazłem pytań, zadanie jest trywialne, ale do końca nie mogłem zrozumieć.

Istnieją przykłady, które nie opisują bardziej szczegółowo całego cyklu wysyłania listu lub czegoś nie rozumiem :(

Konfiguracja

    return [
    //....
   'components' => [
    ......
    'mail' => [
      'class' => 'yii\swiftmailer\Mailer',
      'transport' => [
        'class' => 'Swift_SmtpTransport',
        'Host' => 'localhost',
        'username' => 'username',
        'password' => 'password',
        'port' => '587',
        'encryption' => 'tls',
      ],
    ],
  ]
];

Wyślij

Yii::$app->mail->compose()
->setTo($toEmail)
->setFrom([$this->email => $this->name])
->setSubject($this->subject)
->setTextBody($this->body)
->send();

Chcę otrzymać konkretny działający przykład. Dziękuję Ci.

P.S. Dodałem rekordy domeny MX, DKIM, SPF.

PD (jakaś odpowiedź):

Wiadomość e-mail przekazywana w polu „Od”, domyślnie umieszczana jest w polu „Ścieżka zwrotna”, musi to być istniejący adres. Niektórzy dostawcy nie zezwalają na wysyłanie poczty z nieistniejących adresów e-mail.

39
frops

Upewnij się, że zainicjowałeś aplikację w środowisku produkcyjnym, aby wysyłać wiadomości e-mail z aplikacji, w przeciwnym razie zostanie ona zapisana w folderze mailoutput lub ręcznie edytuj plik konfiguracyjny w następujący sposób.

W sekcji komponentów w pliku common/main-local.php

'mail' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@backend/mail',
        'useFileTransport' => false,//set this property to false to send mails to real email addresses
        //comment the following array to send mail using php's mail function
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'Host' => 'smtp.gmail.com',
            'username' => '[email protected]',
            'password' => 'password',
            'port' => '587',
            'encryption' => 'tls',
            ],
    ],

W twoim kontrolerze

    \Yii::$app->mail->compose('your_view', ['params' => $params])
    ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail'])
    ->setTo('[email protected]')
    ->setSubject('This is a test mail ' )
    ->send();

To powinno działać! Mam nadzieję, że to ci pomoże!

47
Dency G B

Nie musisz używać transportu SMTP z swiftmailer, usuń tylko 'useFileTransport' => true w pliku konfiguracyjnym (app/config/web.php w podstawowym szablonie), a wiadomości będą płynąć.

Spójrz w dokumentach:

http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html

9
uselma

Ostrzeżenie: Ta opcja nie jest już dostępna, ponieważ Mandrill został kupiony przez Mailchimp

Czasami mogą występować problemy z korzystaniem z SwiftMailer, niezależne od Ciebie. Tak jak wtedy, gdy korzystałem z serwera poczty mail.ru. Znalazłem rozwiązanie w społeczności laravel społeczność i wdrożyłem w Yii2).

Możesz skorzystać z alternatywnej usługi, takiej jak https://mandrillapp.com/ (12 tys. E-maili miesięcznie, 250 w ciągu godziny jest bezpłatne) i konfiguracja jak poniżej:

laravel community/setup mail with mandrill

'Host' => 'smtp.mandrillapp.com',
'username' => '[email protected]',
'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill
'port' => '587',
'encryption' => 'tls',

Jeśli korzystasz z poczty e-mail Gmail, możesz również spotkać się z problemem bezpieczeństwa. Możesz wyłączyć zabezpieczenia, zezwalając aplikacji na korzystanie z konta Gmail.

Jeśli zalogowałeś się za pomocą Google, użyj poniższych linków:

https://www.google.com/settings/security/lesssecureapps

Mam nadzieję, że to komuś pomoże

5
sambua

Jeśli używasz podstawowego szablonu, musisz go dodać

'viewPath' => '@app/mail',

do config

4
Martin

W rzeczywistości musisz użyć klucza konfiguracji mailer zamiast mail.

'components' => [
...
    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'Host' => 'localhost',
            'username' => 'username',
            'password' => 'password',
            'port' => '587',
            'encryption' => 'tls',
        ],
    ],
...
],
1
MichalB

Opcja bezpieczeństwa Gmaila

https://myaccount.google.com/lesssecureapps

Ścieżka do pliku projektu

config\web.php
'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    'useFileTransport' => false,
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'Host' => 'smtp.gmail.com',  
        'username' => '[email protected]',
        'password' => 'email_password',
        'port' => '465',
        'encryption' => 'ssl',
        'streamOptions' => [ 
            'ssl' => [ 
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
            ],
        ]
    ]
],

Dodaj funkcję w kontrolerze

public function actionSend() {
    $send = Yii::$app->mailer->compose()
    ->setFrom('[email protected]')
    ->setTo('[email protected]')
    ->setSubject('Test Message')
    ->setTextBody('Plain text content. YII2 Application')
    ->setHtmlBody('<b>HTML content <i>Ram Pukar</i></b>')
    ->send();
    if($send){
        echo "Send";
    }
}
1
Ram Pukar