ایمیل
پیکربندی
لاراول یک API تمیز و ساده را بر روی کتابخانه محبوب
SwiftMailer
ارائه می دهد .
فایل پیکربندی نامه
config/mail.php
حاوی گزینههایی است که به شما امکان میدهد میزبان، پورت و اعتبارنامه SMTP خود را تغییر دهید، و همچنین یک
from
آدرس جهانی برای همه پیامهای ارسال شده توسط کتابخانه تنظیم کنید.
می توانید از هر سرور SMTP که می خواهید استفاده کنید.
اگر میخواهید از
mail
تابع PHP برای ارسال نامه استفاده کنید، میتوانید
در فایل پیکربندی آن
driver
را به تغییر دهید.
mail
یک
sendmail
راننده نیز موجود است.
درایورهای API
لاراول همچنین شامل درایورهایی برای Mailgun و Mandrill HTTP API است.
این APIها اغلب ساده تر و سریعتر از سرورهای SMTP هستند.
هر دوی این درایورها نیاز دارند که کتابخانه HTTP Guzzle 5 در برنامه شما نصب شود.
با افزودن خط زیر به فایل خود می توانید Guzzle 5 را به پروژه خود اضافه کنید
composer.json
:
"guzzlehttp/guzzle": "~5.0"
درایور تفنگ پستی
برای استفاده از درایور Mailgun، این
driver
گزینه را در
فایل پیکربندی
mailgun
خود تنظیم کنید.
config/mail.php
در مرحله بعد،
config/services.php
اگر فایلی از قبل برای پروژه شما وجود ندارد، یک فایل پیکربندی ایجاد کنید.
بررسی کنید که حاوی گزینه های زیر باشد:
'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key',],
درایور ماندریل
برای استفاده از درایور Mandrill، این
driver
گزینه را در
فایل پیکربندی
mandrill
خود تنظیم کنید.
config/mail.php
در مرحله بعد،
config/services.php
اگر فایلی از قبل برای پروژه شما وجود ندارد، یک فایل پیکربندی ایجاد کنید.
بررسی کنید که حاوی گزینه های زیر باشد:
'mandrill' => [ 'secret' => 'your-mandrill-key',],
درایور لاگ
اگر
driver
گزینه
config/mail.php
فایل پیکربندی شما بر روی تنظیم شده باشد
log
، تمام ایمیل ها در فایل های گزارش شما نوشته می شوند و در واقع برای هیچ یک از گیرندگان ارسال نمی شوند.
این در درجه اول برای اشکال زدایی سریع، محلی و تأیید محتوا مفید است.
استفاده پایه
این
Mail::send
روش ممکن است برای ارسال یک پیام ایمیل استفاده شود:
Mail::send('emails.welcome', ['key' => 'value'], function($message){ $message->to('foo@example.com', 'John Smith')->subject('Welcome!');});
اولین آرگومان ارسال شده به
send
متد، نام view است که باید به عنوان متن ایمیل استفاده شود.
دوم، دادههایی است که باید به view ارسال شوند، اغلب بهعنوان یک آرایه انجمنی که در آن آیتمهای داده توسط نما در دسترس هستند
$key
.
سومین بسته شدن است که به شما امکان می دهد گزینه های مختلفی را در پیام ایمیل مشخص کنید.
توجه: یک
$message
متغیر همیشه به نماهای ایمیل ارسال می شود و امکان جاسازی درون خطی پیوست ها را فراهم می کند. بنابراین، بهتر است از ارسال یکmessage
متغیر در payload view خود اجتناب کنید.
همچنین میتوانید یک نمای متن ساده را برای استفاده در کنار نمای HTML مشخص کنید:
Mail::send(['html.view', 'text.view'], $data, $callback);
یا، می توانید تنها یک نوع نمای را با استفاده از کلیدهای
html
یا مشخص کنید
text
:
Mail::send(['text' => 'view'], $data, $callback);
میتوانید گزینههای دیگری را در پیام ایمیل مانند هر نسخههای کربنی یا پیوستهایی نیز مشخص کنید:
Mail::send('emails.welcome', $data, function($message){ $message->from('us@example.com', 'Laravel'); $message->to('foo@example.com')->cc('bar@example.com'); $message->attach($pathToFile);});
هنگام پیوست کردن فایلها به پیام، میتوانید نوع MIME و/یا نام نمایشی را نیز مشخص کنید:
$message->attach($pathToFile, ['as' => $display, 'mime' => $mime]);
اگر فقط نیاز دارید که یک رشته ساده را به جای یک نمای کامل ایمیل کنید، از
raw
روش زیر استفاده کنید:
Mail::raw('Text to e-mail', function($message){ $message->from('us@example.com', 'Laravel'); $message->to('foo@example.com')->cc('bar@example.com');});
توجه: نمونه پیام ارسال شده به
Mail::send
Closure کلاس پیام SwiftMailer را گسترش می دهد و به شما امکان می دهد هر روشی را در آن کلاس فراخوانی کنید تا پیام های ایمیل خود را بسازید.
تعبیه پیوست های درون خطی
جاسازی تصاویر درون خطی در ایمیلهای شما معمولاً دشوار است. با این حال، لاراول یک راه راحت برای پیوست کردن تصاویر به ایمیل های شما و بازیابی CID مناسب ارائه می دهد.
جاسازی یک تصویر در نمای ایمیل
<body> Here is an image: <img src="<?php echo $message->embed($pathToFile); ?>"></body>
جاسازی داده های خام در نمای ایمیل
<body> Here is an image from raw data: <img src="<?php echo $message->embedData($data, $name); ?>"></body>
توجه داشته باشید که
$message
متغیر همیشه توسط نما به نمای ایمیل ارسال می شود
Mail
.
نامه در صف
در صف یک پیام ایمیل
از آنجایی که ارسال پیام های ایمیل می تواند زمان پاسخگویی برنامه شما را به شدت افزایش دهد، بسیاری از توسعه دهندگان ترجیح می دهند پیام های ایمیل را برای ارسال پس زمینه در صف قرار دهند.
لاراول با استفاده از API صف یکپارچه
داخلی خود این کار را آسان می کند
.
برای صف بندی یک پیام ایمیل، به سادگی از
queue
روش روی
Mail
نما استفاده کنید:
Mail::queue('emails.welcome', $data, function($message){ $message->to('foo@example.com', 'John Smith')->subject('Welcome!');});
همچنین میتوانید تعداد ثانیههایی را که میخواهید ارسال پیام را به تأخیر بیندازید با استفاده از
later
روش زیر مشخص کنید:
Mail::later(5, 'emails.welcome', $data, function($message){ $message->to('foo@example.com', 'John Smith')->subject('Welcome!');});
اگر میخواهید یک صف یا «لوله» مشخصی را مشخص کنید تا پیام را روی آن فشار دهید، میتوانید این کار را با استفاده از
روشهای
queueOn
و انجام دهید:
laterOn
Mail::queueOn('queue-name', 'emails.welcome', $data, function($message){ $message->to('foo@example.com', 'John Smith')->subject('Welcome!');});
ایمیل و توسعه محلی
هنگام توسعه برنامه ای که ایمیل ارسال می کند، معمولاً مطلوب است که ارسال پیام از محیط محلی یا توسعه دهنده خود غیرفعال شود.
برای انجام این کار، می توانید
Mail::pretend
روش را فراخوانی کنید یا
pretend
گزینه موجود در
config/mail.php
فایل پیکربندی را روی
true
.
هنگامی که ایمیل در
pretend
حالت است، پیام ها به جای ارسال به گیرنده، در فایل های گزارش برنامه شما نوشته می شوند.
اگر میخواهید واقعاً ایمیلهای آزمایشی را مشاهده کنید، از سرویسی مانند MailTrap استفاده کنید .