Laravel-メールの送信
Laravelは無料の機能豊富なライブラリを使用しています SwiftMailerメールを送信します。ライブラリ関数を使用すると、面倒なことなく簡単にメールを送信できます。電子メールテンプレートはビューと同じ方法で読み込まれます。つまり、Blade構文を使用して、テンプレートにデータを挿入できます。
次の表に、の構文と属性を示します。 send 関数-
構文 | void send(string | array $ view、array $ data、Closure | string $ callback) |
パラメーター |
|
戻り値 | 何もない |
説明 | メールを送信します。 |
3番目の引数では、$ callbackクロージャがメッセージインスタンスを受信しました。そのインスタンスを使用して、次の関数を呼び出し、以下に示すようにメッセージを変更することもできます。
- $ message→subject( 'チュートリアルポイントへようこそ');
- $ message→from('[email protected] '、' Mr。Example ');
- $ message→to('[email protected] '、' Mr。Example ');
あまり一般的ではない方法には、次のものがあります。
- $ message→sender('[email protected] '、' Mr。Example ');
- $ message→returnPath('[email protected] ');
- $ message→cc('[email protected] '、' Mr。Example ');
- $ message→bcc('[email protected] '、' Mr。Example ');
- $ message→replyTo('[email protected] '、' Mr。Example ');
- $ message→priority(2);
ファイルを添付または埋め込むには、次の方法を使用できます-
- $ message→attach( 'path / to / attachment.txt');
- $ message→embed( 'path / to / attachment.jpg');
メールはHTMLまたはテキストとして送信できます。以下に示すように配列を渡すことにより、最初の引数で送信するメールのタイプを指定できます。デフォルトのタイプはHTMLです。プレーンテキストのメールを送信する場合は、次の構文を使用します。
構文
Mail::send([‘text’=>’text.view’], $data, $callback);
この構文では、最初の引数は配列を取ります。使用するtext キーの値としてのビューのキー名として。
例
Step 1 − Gmailアカウントからメールを送信します。そのためには、Laravel環境ファイルでGmailアカウントを構成する必要があります。 - .envファイル。Gmailアカウントで2段階認証プロセスを有効にし、アプリケーション固有のパスワードを作成してから、以下に示すように.envパラメーターを変更します。
.env
MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls
Step 2 −変更後 .env ファイルは、以下の2つのコマンドを実行して、キャッシュをクリアし、Laravelサーバーを再起動します。
php artisan config:cache
Step 3 −というコントローラーを作成します MailController 次のコマンドを実行します。
php artisan make:controller MailController --plain
Step 4 −正常に実行されると、次の出力が表示されます−
Step 5 −次のコードをコピーします
app/Http/Controllers/MailController.php ファイル。
app/Http/Controllers/MailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MailController extends Controller {
public function basic_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send(['text'=>'mail'], $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Basic Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "Basic Email Sent. Check your inbox.";
}
public function html_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel HTML Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "HTML Email Sent. Check your inbox.";
}
public function attachment_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Testing Mail with Attachment');
$message->attach('C:\laravel-master\laravel\public\uploads\image.png');
$message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
$message->from('[email protected]','Virat Gandhi');
});
echo "Email Sent with attachment. Check your inbox.";
}
}
Step 6 −次のコードをコピーします resources/views/mail.blade.php ファイル。
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 −次の行をに追加します app/Http/routes.php.
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email');
Route::get('sendhtmlemail','MailController@html_email');
Route::get('sendattachmentemail','MailController@attachment_email');
Step 8 −次のURLにアクセスして、基本的な電子メールをテストします。
http://localhost:8000/sendbasicemail
Step 9−出力画面は次のようになります。受信トレイをチェックして、基本的な電子メール出力を確認してください。
Step 10 −次のURLにアクセスして、HTMLメールをテストします。
http://localhost:8000/sendhtmlemail
Step 11−出力画面は次のようになります。受信トレイをチェックして、HTMLメールの出力を確認してください。
Step 12 −次のURLにアクセスして、添付ファイル付きのHTMLメールをテストします。
http://localhost:8000/sendattachmentemail
Step 13 −次の出力を見ることができます
Note −で MailController.phpfromメソッドのファイルの電子メールアドレスは、電子メールアドレスを送信できる電子メールアドレスである必要があります。通常、これはサーバーで構成されている電子メールアドレスである必要があります。