نسخه:

ایمیل

پیکربندی

لاراول یک 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 استفاده کنید .