Heim  >  Artikel  >  PHP-Framework  >  Lösen Sie das Problem, dass von yii2 gesendete E-Mails nicht empfangen werden können

Lösen Sie das Problem, dass von yii2 gesendete E-Mails nicht empfangen werden können

藏色散人
藏色散人Original
2020-07-21 11:54:063252Durchsuche

Die Lösung für das Problem, dass yii2 keine gesendeten E-Mails empfangen kann: Suchen und öffnen Sie zuerst den Code der Konfigurationsdatei und ändern Sie dann den Code „'useFileTransport' => true“; Endlich speichern. Ändern Sie es einfach.

Lösen Sie das Problem, dass von yii2 gesendete E-Mails nicht empfangen werden können

Lösen Sie das Yii2-E-Mail-Versandproblem (das Ergebnis wird erfolgreich zurückgegeben, aber die E-Mail kann nicht empfangen werden)

Ich habe es gerade verwendet. Obwohl die E-Mail-Versandfunktion von yii ein erfolgreiches Ergebnis zurückgibt, kann die E-Mail nicht empfangen werden. Der Code der Konfigurationsdatei lautet wie folgt:

Empfohlen: „yii-Tutorial

'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=yiidemo',
        'username' => 'root',
        'password' => 'root',
        'charset' => 'utf8',
    ],
    'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'viewPath' => '@common/mail',
        // send all mails to a file by default. You have to set
        // 'useFileTransport' to false and configure a transport
        // for the mailer to send real emails.
        'useFileTransport' => true,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.qq.com',
            'username' => '********@qq.com',
            'password' => '********',
            'port' => '465',
            'encryption' => 'ssl',
        ],
    ],
],

Controller-Code:

public $modelClass = 'common\models\User';
 
public function actions()
{
    $actions = parent::actions();
 
    // 禁用"create" 操作后可用自己在控制器中写的方法
    unset($actions['update'],$actions['create'],$actions['delete']);
     
    //$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
    return $actions;
}
 
 
 
public function actionCreate(){
 
    $request = Yii::$app->request;
    $params = $request->post();
    if($params){
         
        $fromName = $request->getBodyParam('fromName');
        $fromBady = $request->getBodyParam('fromBady');
        $toName = $request->getBodyParam('toName');
        $body = $request->getBodyParam('body');
        return $this->send($fromName,$fromBady,$toName,$body);
         
    }
     
    return false;
 
}
 
/*
 * Email Send function
 * @param1 $fromName
 * @param1 $toName
 * @param1 $body
 * $return boo1ean
 *
 */
 
public function send($fromName,$fromBady,$toName,$body = ''){
     
    $mail = \Yii::$app->mailer->compose()
        ->setFrom([$fromName=>$fromBady])
        ->setTo($toName)
        ->setSubject('邮件发送配置')
        ->setTextBody($body)   //发布纯文字文本
        ->send();
    if($mail){
        return [
            'name' => [
                'fromName' => $fromName,
                'fromBady' => $fromBady,
                'toName' => $toName,
                'body' => $body,
            ],
            'message' => '发生到['.$toName.']的邮件成功!',
            'code' => 0,
            'status' => 200,
        ];
    }else{
        return [
            'name' => 'Error',
            'message' => '发生到'.$toName.'的邮件失败!',
            'code' => 0,
            'status' => 402,
        ];
    }
}

Aber Sie werden feststellen, dass die Daten Die Rücksendung ist erfolgreich. Aber Sie haben die E-Mail nicht erhalten.

Das sollten Sie eingeben

'useFileTransport' => true 改成 'useFileTransport' => false,

und Ihr E-Mail-Passwort ist der qq-Autorisierungscode (gehen Sie zu Einstellungen->Kontoansicht in Ihrem E-Mail)

Mit den oben genannten Bemühungen erhalten Sie erfolgreich E-Mails!

Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, dass von yii2 gesendete E-Mails nicht empfangen werden können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist Yii in yii2?Nächster Artikel:Was ist Yii in yii2?