#P1703
POST /v2/mail/sent/store
Mail: Store & Send Email
این اندپوینت وظیفه ذخیرهسازی و ارسال ایمیل را بر عهده دارد.
عملکرد این متد وابسته به پارامتر type است: اگر outbox باشد، ایمیل علاوه بر ذخیره شدن در دیتابیس، با استفاده از تنظیمات SMTP پویا (Dynamic SMTP) بلافاصله ارسال میشود. در غیر این صورت (مثلاً پیشنویس)، صرفاً ذخیره میشود.
Request Overview
URL:
/v2/mail/sent/storeMethod: POST
Controller: MailController@mailSentStore
Middleware Stack: authWithJwt
Access Control
- دسترسی معتبر JWT.
Body Parameters
| Field | Type | Description |
|---|---|---|
| from | integer | (الزامی) شناسه آدرس فرستنده (ID از جدول `mail_address`). جهت واکشی تنظیمات SMTP استفاده میشود. |
| type | string | (الزامی) نوع عملیات. مقدار outbox باعث ارسال واقعی ایمیل میشود. |
| to | string/array | (الزامی) آدرس گیرنده(ها). |
| subject | string | (الزامی) موضوع ایمیل. |
| content | html/string | (الزامی) متن بدنه ایمیل. |
| cc | string/array | (اختیاری) گیرندگان رونوشت. |
| bcc | string/array | (اختیاری) گیرندگان رونوشت مخفی. |
| attachments | array[string] | (اختیاری) آرایهای از مسیر فایلهای آپلود شده (روی دیسک Liara) جهت پیوست. |
Logic Details
منطق پردازش به شرح زیر است:
- ذخیره اولیه (Persist): اطلاعات اولیه ایمیل (گیرندگان، موضوع، متن) در جدول
mail_sentدرج شده وmail_idدریافت میشود. - پردازش پیوستها (DB):
- اگر آرایه
attachmentsارسال شده باشد، سیستم روی آنها حلقه میزند. - متادیتای هر فایل (mime, size, url) از دیسک ابری (Liara) استخراج میشود.
- اطلاعات در جدول
mail_attachmentبا جهتsentذخیره میشود.
- اگر آرایه
- منطق ارسال (SMTP): اگر
type == 'outbox'باشد:- واکشی تنظیمات: بر اساس
from(شناسه آدرس)، اطلاعات سرور (Host, Port, User, Pass) و برند (Brand/Title, Signature) از جداولmail_address,mail_servers,officesاستخراج میشود. - کانفیگ پویا (Dynamic Config): تنظیمات
mail.mailers.smtpدر لاراول به صورت Runtime با اطلاعات واکشی شده جایگزین میشود. - ارسال:
- امضا (Signature) در صورت وجود به انتهای متن اضافه میشود.
- هدر
Fromبا ترکیب آدرس+دامنه و عنوان+برند تنظیم میشود. - فایلهای پیوست مجدداً از دیسک خوانده شده و به ایمیل ضمیمه میشوند (`$message->attach`).
- ایمیل ارسال میگردد.
- واکشی تنظیمات: بر اساس
Response Structure
پاسخ موفق
- Status Code:
200 OK - Body:
{ "status": true, "time": 1670165000 }
Flowchart
Start (POST /sent/store)
↓
Insert into `mail_sent`
↓
Has Attachments?
Yes
Loop Attachments
Get Meta from Disk
Insert `mail_attachment`
Get Meta from Disk
Insert `mail_attachment`
No
↓
Type == 'outbox'?
No
End (Saved Only)
Yes
Fetch SMTP Credentials
(Join address, servers, offices)
(Join address, servers, offices)
↓
Set Runtime Config
Config::set('mail.smtp', ...)
Config::set('mail.smtp', ...)
↓
Send Mail
Add Signature + Attachments
Add Signature + Attachments
↓
End (Sent)