رفتن به محتوا

ایمیل

ایمیل‌های تراکنشی را از اپ خود ارسال کنید. هویت‌های فرستنده را مدیریت کرده و وضعیت تحویل را از Admin > Email اپتان پیگیری کنید.

هر اپ Proyecta می‌تواند ایمیل تراکنشی ارسال کند. یک هویت فرستنده را تأیید کنید، سپس از کد اپتان ارسال کنید — بدون نیاز به حساب کاربری جداگانه در یک سرویس ایمیل.

Admin > Email را در builder باز کنید — یا /admin را در سایت منتشرشده‌ات. این بخش دو قسمت دارد:

قسمت کاربرد
Identities افزودن و تأیید آدرس‌های ایمیل یا دامنه‌های فرستنده
Sent مرور ایمیل‌های ارسال‌شده به همراه وضعیت تحویل (sent، delivered، bounced و…)

می‌توانی یک هویت فرستنده جدید اضافه کنی و تاریخچه تحویل ایمیل‌هایت را مرور کنی — همه بدون نوشتن کد.

راه‌اندازی دو مرحله‌ای

Section titled “راه‌اندازی دو مرحله‌ای”
  1. ایجاد و تأیید یک هویت فرستنده (یک آدرس ایمیل یا یک دامنه) در پنل ادمین
  2. ارسال — از اپ با useSendEmail()، یا از پنل ادمین برای کمپین‌ها

ارسال از یک آدرس مشترک (@proyectamail.com)

Section titled “ارسال از یک آدرس مشترک (@proyectamail.com)”

ساده‌ترین راه این است که یک آدرس روی دامنه ارسال مشترک Proyecta یعنی @proyectamail.com رزرو کنی. به محض ایجاد، بلافاصله تأیید می‌شود — چون پلتفرم از قبل مالک آن دامنه است و نیازی به تنظیم هیچ رکورد DNS نداری.

این کار را در بخش Emails پنل ادمین اپت انجام می‌دهی: آدرس مورد نظرت را وارد کن و بلافاصله آماده استفاده است.

آدرس‌های تکی فقط روی @proyectamail.com کار می‌کنند. درخواست یک آدرس روی دامنه دیگر (مثلاً hello@myapp.com) رد می‌شود — برای ارسال از دامنه خودت، باید کل دامنه را تأیید کنی (ادامه را ببین). هر آدرس مشترک به صورت سراسری رزرو می‌شود، پس دو اپ نمی‌توانند از یک فرستنده @proyectamail.com استفاده کنند.

برای ارسال از دامنه خودت — از هر آدرسی در آن (hello@، support@، noreply@ و غیره) — باید کل دامنه را تأیید کنی. برخلاف آدرس مشترک @proyectamail.com، یک دامنه سفارشی بلافاصله تأیید نمی‌شود.

دامنه را در همان بخش Emails اضافه کن. دامنه نزد provider ایمیل ثبت می‌شود و رکوردهای SPF، DKIM و DMARC برای انتشار در DNS به تو نشان داده می‌شود. فرستنده تا زمانی که این رکوردها منتشر شوند و provider آن‌ها را تأیید کند در وضعیت pending باقی می‌ماند، سپس به verified تبدیل می‌شود — بعد از انتشار رکوردها از دکمه بررسی مجدد استفاده کن.

تأیید دامنه مبتنی بر DNS به طور کامل پیاده‌سازی شده است — رکوردها توسط provider تولید می‌شوند و هر بار بررسی مجدد، وضعیت آن‌ها را از provider استعلام می‌کند.

پشت پرده: Proyecta دامنه ارسالت را از طریق provider هویت ایمیل (Resend) احراز هویت می‌کند و پیام‌هایت را از طریق provider تراکنشی (SendGrid) تحویل می‌دهد. تو هیچ‌وقت نیازی به مدیریت حساب در هیچ‌کدام از این دو نداری.

از صفحات اپت با hook مربوط به useSendEmail() ایمیل ارسال می‌کنی. یک template انتخاب می‌کنی و variables را پاس می‌دهی؛ پلتفرم پیام را به زبان اپ رندر کرده و ارسال می‌کند:

import { useSendEmail } from '@/hooks/useEmail.ts';
function ConfirmButton({ booking }) {
const { send, isPending, error } = useSendEmail();
return (
<button
disabled={isPending}
onClick={() =>
send({
template: 'booking_confirmation',
variables: { date: booking.date, service: booking.service },
})
}
>
Email me the details
</button>
);
}

توجه کن چه چیزهایی پاس نمی‌دهی: گیرنده، موضوع یا HTML. هر template مخاطبان خودش را تعریف می‌کند:

  • self (تأییدیه رزرو/سفارش، خوش‌آمدگویی) → آدرس خود کاربر وارد شده، که از session گرفته می‌شود.
  • owner (owner_alert) → ادمین‌های اپت.

هر دو به یک session فعال نیاز دارند. این یک تصمیم آگاهانه است، نه یک کمبود: کلید قابل انتشاری که این فراخوانی را احراز هویت می‌کند در سورس صفحه‌ات قرار دارد، پس اگر ارسال به هر گیرنده‌ای امکان‌پذیر بود، هر کسی می‌توانست از اپت به عنوان یک رله اسپم استفاده کند. برای اطلاع‌رسانی به خودت از یک بازدیدکننده ناشناس، از فرم استفاده کن — ارسال فرم‌ها به صورت خودکار به owner ایمیل می‌زند و برای فرستنده تأیید می‌فرستد، و این مسیر قابل جعل در مرورگر نیست.

خطاها به صورت PlatformApiError می‌رسند: 401 (نیاز به session)، 403 (template برای این اپ فعال نیست)، 429 (محدودیت نرخ — پیام را نشان بده و گزینه تلاش مجدد ارائه بده)، 422 (آدرسی ثبت نشده).

تب Sent در پنل ادمینت همه چیزی که اپت ارسال کرده را به همراه آخرین رویداد تحویل نشان می‌دهد — delivered، opened، clicked، bounced، complained — پس معمولاً اصلاً نیازی به کد نوشتن برای این کار نداری.

هر مورد وضعیتش را دارد — sent، delivered، opened، clicked، bounced یا complained — و می‌توانی هر پیام را باز کنی و HTML و متن دقیقی که ارسال شده را بخوانی. اگر تحویل‌ها با شکست مواجه می‌شوند، اول از اینجا شروع کن.

بگذار AI همه چیز را وصل کند

Section titled “بگذار AI همه چیز را وصل کند”

نیازی نیست این‌ها را دستی بنویسی:

  • "Verify hello@myapp.com as a sending identity."
  • "Email the customer a confirmation after they finish booking."
  • "After a successful checkout, send the customer their receipt."
  • "Show me the last 20 emails we've sent and whether they bounced."
  • آدرس from باید یک هویت تأییدشده باشد. ارسال با یک آدرس تأییدنشده خطا برمی‌گرداند.
  • محدودیت‌های ماهانه بر اساس پلن Proyecta اعمال می‌شوند.
  • Template editor — طراحی بصری template‌های تراکنشی در builder
  • Bulk/batch send endpoint برای ارسال انبوه