So verwenden Sie den swiftMailer in Yii2

Lesezeit: 4 Minuten

Benutzer-Avatar
frops

Ich kann nicht endlich verstehen, wie man die swiftMailer-Erweiterung in Yii2 verwendet. Danach habe ich zu diesem Thema keine Fragen gefunden, die Aufgabe ist trivial, aber bis zum Ende konnte ich nicht verstehen.

Es gibt Beispiele, die den gesamten Versandzyklus des Briefes nicht näher beschreiben oder ich verstehe etwas nicht 🙁

Konfiguration

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

Senden

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

Ich möchte ein konkretes Arbeitsbeispiel erhalten. Vielen Dank.

PS Ich habe Domain-Einträge angepasst MX, DKIM, SPF hinzugefügt.

UPD (einige Antworten):

E-Mail, die im Feld „Von“ übergeben wird, sie wird standardmäßig im Feld „Rücksendepfad“ abgelegt, muss das sein bestehende Adresse. Einige Anbieter erlauben das Versenden von E-Mails von nicht existierenden E-Mail-Adressen nicht.

Benutzer-Avatar
Dency GB

Stellen Sie sicher, dass Sie Ihre Anwendung in der Produktionsumgebung initialisiert haben, um E-Mails von Ihrer Anwendung zu senden, andernfalls werden sie in den Mailoutput-Ordner geschrieben. Oder bearbeiten Sie die Konfigurationsdatei manuell wie folgt.

Im Komponentenabschnitt Ihrer 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',
            ],
    ],

In Ihrem Controller

    \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();

Das sollte funktionieren! Hoffe das wird dir helfen!

  • Vielen Dank! Ich habe die Antwort bereits gefunden. Es scheint, manche Provider erhalten nur vorhandene E-Mail im Feld „Rückweg“

    – Fräulein

    30. Juli 2014 um 7:36 Uhr

  • Wenn Sie sich das Beispiel für das Zurücksetzen des Passworts ansehen, sollte dies der Fall sein mailernicht mail yourApp->frontend->models->PasswordResetRequestForm.php

    – johnsnails

    29. November 2014 um 22:42 Uhr


  • Hallo Dency GB, ich bin neu bei Yii2 und Framework. Können Sie mir bitte erklären, wo ich den für den Controller vorgeschlagenen Code eingeben soll? Soll ich es unter einem neuen Controller / einer neuen Aktion platzieren und wie man diese verwendet, oder unter Erstellen oder Aktualisieren platzieren. Vielen Dank.

    – Joshi

    9. Januar 2015 um 21:20 Uhr

Benutzer-Avatar
uselma

Sie müssen den SMTP-Transport nicht mit Swiftmailer verwenden, sondern nur entfernen 'useFileTransport' => true in der Konfigurationsdatei (app/config/web.php im Basis-Template) und die Mails fließen.

Schau mal in die Doku:

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

Benutzer-Avatar
Sambia

Achtung: Diese Option ist nicht mehr verfügbar, da Mandrill von Mailchimp gekauft wurde

Manchmal können Probleme bei der Verwendung von SwiftMailer auftreten, die nicht von Ihnen abhängig sind. Wie damals, als ich den E-Mail-Server mail.ru benutzte. Ich habe eine Lösung in der Laravel-Community gefunden und in Yii2 implementiert.

Sie können alternative Dienste wie verwenden https://mandrillapp.com/ (12.000 E-Mails pro Monat, 250 innerhalb einer Stunde sind kostenlos) und die Einrichtung wie folgt:

Laravel-Community / Setup-Mail mit Mandrill

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

Wenn Sie Gmail-E-Mail verwenden, können Sie auch mit Sicherheitsproblemen konfrontiert werden. Sie können die Sicherheit ausschalten, indem Sie der Anwendung erlauben, Ihr Google Mail-Konto zu verwenden.

Wenn Sie sich mit Google angemeldet haben, verwenden Sie die folgenden Links:

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

Hoffe, es wird jemandem helfen

  • Kein kostenloser Service mehr.

    – Handwerker

    26. Juni 2016 um 6:44 Uhr

Wenn Sie die Basisvorlage verwenden, müssen Sie hinzufügen

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

zur Konfig

Sicherheitsoption von Google Gmail

https://myaccount.google.com/lesssecureapps

Pfad der Projektdatei

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,
            ],
        ]
    ]
],

Fügen Sie eine Funktion in Ihrem Controller hinzu

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";
    }
}

Benutzer-Avatar
Naem Ali

Eigentlich müssen Sie den Konfigurationsschlüssel verwenden Mailer Anstatt von Post.

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

1253850cookie-checkSo verwenden Sie den swiftMailer in Yii2

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy