Yii2でswiftMailer拡張機能を使用する方法を最終的に理解できません。このことから判断すると、質問は見つかりませんでした。タスクは簡単ですが、最後まで理解できませんでした。
手紙を送信するすべてのサイクルをより詳細に説明していない例、または私は何かを理解していない:(
セットアップ
return [
//....
'components' => [
......
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'Host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
]
];
送信
Yii::$app->mail->compose()
->setTo($toEmail)
->setFrom([$this->email => $this->name])
->setSubject($this->subject)
->setTextBody($this->body)
->send();
具体的な作業例を受け取りたい。ありがとうございました。
追伸ドメインレコードMX、DKIM、SPFを追加しました。
PD(何らかの回答):
「From」フィールドに渡される電子メールは、デフォルトで「Return-path」のフィールドに書き込まれ、既存のアドレスである必要があります。一部のプロバイダーは、存在しないメールアドレスからのメール送信を許可していません。
プロダクション環境でアプリケーションを初期化して、アプリケーションからメールを送信していることを確認してください。そうでない場合は、mailoutputフォルダーに書き込まれます。または、次のように構成ファイルを手動で編集します。
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',
],
],
コントローラーで
\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();
これは動作するはずです!これがあなたを助けることを願っています!
SwiftmailerでSMTPトランスポートを使用する必要はありません。削除するのは'useFileTransport' => true
構成ファイル(app/config/web.php
(基本テンプレートの場合)およびメールが流れます。
ドキュメントを見てください:
http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html
SwiftMailerの使用に問題がある場合があります。 mail.ru電子メールサーバーを使用したときのように。私はlaravelコミュニティで解決策を見つけ、Yii2で問題を抱えています。
https://mandrillapp.com/ (1か月あたり1万2,000メール、1時間以内に250通が無料)などの代替サービスを使用して、次のように設定できます。
laravelコミュニティ/マンドリルを使用したメールのセットアップ
'Host' => 'smtp.mandrillapp.com',
'username' => '[email protected]',
'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill
'port' => '587',
'encryption' => 'tls',
Gmailメールを使用している場合は、セキュリティの問題に直面することもあります。アプリケーションがGmailアカウントを使用できるようにすることで、セキュリティを無効にすることができます。
Googleでサインインした場合は、以下のリンクを使用してください。
https://www.google.com/settings/security/lesssecureapps
それが誰かを助けることを願っています
基本テンプレートを使用している場合は、追加する必要があります
'viewPath' => '@app/mail',
構成へ
実際には、mailの代わりに設定キーmailerを使用する必要があります。
'components' => [
...
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'Host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
...
],
Google Gmailセキュリティオプション
https://myaccount.google.com/lesssecureapps
プロジェクトファイルのパス
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,
],
]
]
],
コントローラー内に機能を追加する
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";
}
}