Skip to main content
#P1703

POST /v2/mail/sent/store

Mail: Store & Send Email

این اندپوینت وظیفه ذخیره‌سازی و ارسال ایمیل را بر عهده دارد.
عملکرد این متد وابسته به پارامتر type است: اگر outbox باشد، ایمیل علاوه بر ذخیره شدن در دیتابیس، با استفاده از تنظیمات SMTP پویا (Dynamic SMTP) بلافاصله ارسال می‌شود. در غیر این صورت (مثلاً پیش‌نویس)، صرفاً ذخیره می‌شود.

Request Overview

URL: /v2/mail/sent/store
Method: 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

منطق پردازش به شرح زیر است:

  1. ذخیره اولیه (Persist): اطلاعات اولیه ایمیل (گیرندگان، موضوع، متن) در جدول mail_sent درج شده و mail_id دریافت می‌شود.
  2. پردازش پیوست‌ها (DB):
    • اگر آرایه attachments ارسال شده باشد، سیستم روی آن‌ها حلقه می‌زند.
    • متادیتای هر فایل (mime, size, url) از دیسک ابری (Liara) استخراج می‌شود.
    • اطلاعات در جدول mail_attachment با جهت sent ذخیره می‌شود.
  3. منطق ارسال (SMTP): اگر type == 'outbox' باشد:
    1. واکشی تنظیمات: بر اساس from (شناسه آدرس)، اطلاعات سرور (Host, Port, User, Pass) و برند (Brand/Title, Signature) از جداول mail_address, mail_servers, offices استخراج می‌شود.
    2. کانفیگ پویا (Dynamic Config): تنظیمات mail.mailers.smtp در لاراول به صورت Runtime با اطلاعات واکشی شده جایگزین می‌شود.
    3. ارسال:
      • امضا (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`
No
Type == 'outbox'?
No
End (Saved Only)
Yes
Fetch SMTP Credentials
(Join address, servers, offices)
Set Runtime Config
Config::set('mail.smtp', ...)
Send Mail
Add Signature + Attachments
End (Sent)