پرش به مستندات
پایگاه دانش

انتقال از SendGrid

SDK مربوط به SendGrid را نگه دارید و از طریق OpenEmail بفرستید. نشانی پایهٔ URL و کلید آن را عوض کنید، و کد ارسال شما همان‌طور که هست می‌ماند.

چه چیزی را عوض کنید

SDK را به https://api.openemail.uk/compat/sendgrid هدایت کنید و به‌جای کلید SendGrid یک کلید API از OpenEmail با مجوز emails:send به آن بدهید. کلید در همان سرآیند Authorization: Bearer فرستاده می‌شود. فراخوانی‌هایی که نامه می‌فرستند همان‌طور که هستند می‌مانند، و نشانی From تعیین می‌کند که پیام می‌تواند برود یا نه، مثل همه‌جای OpenEmail.

import sgMail from '@sendgrid/mail'import client from '@sendgrid/client' client.setApiKey(process.env.OPENEMAIL_API_KEY)client.setDefaultRequest('baseUrl', 'https://api.openemail.uk/compat/sendgrid')sgMail.setClient(client) await sgMail.send({  from: '[email protected]',  to: '[email protected]',  subject: 'Your invoice',  html: '<p>Your invoice is attached.</p>',})

در Node، اول کلید را روی کلاینت تنظیم کنید، بعد نشانی پایه را، و سپس کلاینت را به بستهٔ mail بدهید. بعد از آن sgMail.setApiKey را صدا نزنید، چون نشانی پایه را به SendGrid برمی‌گرداند. SDK هشدار می‌دهد که کلید با SG. شروع نمی‌شود، که بی‌ضرر است. در Python، Ruby و PHP، میزبان را بدون خط مورب پایانی بدهید.

چه چیزی به چه چیزی نگاشت می‌شود

نقطهٔ پایانی‌ای که پاسخ داده می‌شود POST /v3/mail/send است. هر مورد در personalizations به پیام جداگانه‌ای در OpenEmail با شناسهٔ خودش تبدیل می‌شود، پس هر درخواست حداکثر 100 پیام می‌فرستد.

SendGridدر OpenEmail
fromفرستنده، همراه با نامش. هر شخصی‌سازی می‌تواند from خودش را بدهد.
personalizationsهر کدام یک پیام. to، cc و bcc آن روی هم تا 50 گیرنده را جا می‌دهند، و subject، headers، custom_args، send_at و substitutions آن فقط روی همان پیام اعمال می‌شوند.
subjectموضوع، مگر اینکه شخصی‌سازی موضوع خودش را بگذارد.
contenttext/plain بدنهٔ متنی و text/html بدنهٔ HTML می‌شود. text/x-amp-html کنار گذاشته می‌شود، چون بدنهٔ HTML خودش پیام را می‌رساند.
attachmentsفایل‌ها، حداکثر 20 عدد و روی هم 5 مگابایت. تصویر درون‌خطی‌ای که HTML شناسهٔ content_id آن را به‌صورت cid: به کار می‌برد، در همان جایی که آمده جاسازی می‌شود. هر فایل درون‌خطی دیگر به‌صورت پیوست معمولی می‌رسد.
reply_toنشانی پاسخ. reply_to_list هم تا وقتی فقط یک نشانی دارد کار می‌کند.
headersسرآیندهای سفارشی: X-*، List-*، Reply-To، Precedence، Auto-Submitted، Importance، Priority و Feedback-ID. هر شخصی‌سازی سرآیندهای خودش را اضافه می‌کند.
categoriesبرچسب‌هایی با نام‌های category، category_2 و به همین ترتیب، که هر کدام یک دسته را نگه می‌دارد.
custom_argsبرچسب‌هایی با همان نام‌ها و مقدارها. مقدارهای شخصی‌سازی اولویت دارند.
send_atارسال زمان‌بندی‌شده، تا یک سال جلوتر. زمانی که گذشته باشد فوراً می‌فرستد.
substitutionsهر کلید در موضوع، بدنهٔ متنی و بدنهٔ HTML همان پیام با مقدارش جایگزین می‌شود.
template_idشناسه (tpl_...) یا slug یک قالب OpenEmail، که با dynamic_template_data پر می‌شود.
tracking_settingsopen_tracking.enable و click_tracking.enable ردیابی باز شدن و کلیک را برای پیام روشن یا خاموش می‌کنند.
mail_settingssandbox_mode.enable درخواست، فرستنده و قالب را بررسی می‌کند و بعد بدون فرستادن چیزی با 200 پاسخ می‌دهد.

هر پیام حداکثر 10 برچسب دارد، با شمردن دسته‌ها و custom_args روی هم. درخواستی که بیشتر لازم دارد به‌جای کوتاه شدن رد می‌شود، تا چیزی از آنچه فرستاده‌اید بی‌صدا گم نشود.

چه چیزی رد می‌شود و چرا

  • شناسهٔ قالب SendGrid در template_id، مثل d-…. قالب‌ها در SendGrid می‌مانند، پس قالب را در OpenEmail دوباره بسازید و شناسه یا slug آن را بفرستید.
  • content در کنار template_id، چون قالب OpenEmail کل بدنه را فراهم می‌کند. substitutions همراه با قالب هم به همین دلیل: مقدارها را در dynamic_template_data بفرستید.
  • بیش از یک نشانی پاسخ، reply_to و reply_to_list با هم، و انواع محتوایی غیر از متن و HTML. دعوت‌نامهٔ تقویم را به‌صورت پیوست .ics بفرستید.
  • روشن بودن mail_settings.footer، و sections، چون OpenEmail متنی در پیام شما نمی‌نویسد.
  • بیش از 10 برچسب، نام برچسبی که چیزی جز حرف، رقم، _ و - داشته باشد، سرآیندی بیرون از فهرست بالا، و بیش از 100 شخصی‌سازی در یک درخواست.

asm، batch_id، ip_pool_name، تنظیمات دور زدن در mail_settings، subscription_tracking، ganalytics، click_tracking.enable_text و open_tracking.substitution_tag پذیرفته می‌شوند و چیزی را تغییر نمی‌دهند. نشانی‌های فهرست توقیف فضای کاری همیشه نادیده گرفته می‌شوند، هر چه یک تنظیم دور زدن بگوید.

پاسخ‌ها و خطاها

  • هر ارسال با 202، بدنهٔ خالی و شناسهٔ پیام OpenEmail در X-Message-Id پاسخ می‌دهد، همان شناسه‌ای که GET /emails/{id} و وب‌هوک‌ها به کار می‌برند. با چند شخصی‌سازی، شناسهٔ پیام اول در آن است. سرآیند Idempotency-Key مثل بقیهٔ API کار می‌کند.
  • خطاها به‌صورت errors برمی‌گردند، فهرستی از message، field و help: 400 برای درخواستی که نمی‌شود فرستاد، 401 برای کلید ناموجود یا ناشناخته، 403 برای کلیدی بدون emails:send یا نشانی From که کلید اجازهٔ استفاده از آن را ندارد یا دامنه‌اش هنوز نمی‌تواند بفرستد، 413 برای بدنهٔ بیشتر از 30 مگابایت یا پیوست‌های بیشتر از 5 مگابایت، و 429 وقتی فضای کاری سهمیهٔ ارسالش را تمام کرده باشد.
  • اگر یک شخصی‌سازی بعد از پذیرفته شدن قبلی‌ها شکست بخورد، خطا پیام‌هایی را که فرستاده شده‌اند نام می‌برد، تا تلاش دوباره بتواند آن‌ها را کنار بگذارد.