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

انتقال از Postmark

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

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

کتابخانه را به https://api.openemail.uk/compat/postmark هدایت کنید و به‌جای توکن سرور یک کلید API از OpenEmail با مجوز emails:send بگذارید. کلید در همان سرآیند X-Postmark-Server-Token فرستاده می‌شود. فراخوانی‌هایی که نامه می‌فرستند همان‌طور که هستند می‌مانند، و نشانی From تعیین می‌کند که پیام می‌تواند برود یا نه، مثل همه‌جای OpenEmail.

import { ServerClient } from 'postmark' const client = new ServerClient(process.env.OPENEMAIL_API_KEY, {  requestHost: 'api.openemail.uk/compat/postmark',}) await client.sendEmail({  From: '[email protected]',  To: '[email protected]',  Subject: 'Your invoice',  HtmlBody: '<p>Your invoice is attached.</p>',  MessageStream: 'outbound',})

در Node، requestHost میزبان و مسیر را با هم می‌گیرد، بدون طرح و بدون خط مورب پایانی. در Ruby، path_prefix در هر دو سر به خط مورب نیاز دارد. در Python، بستهٔ رسمی postmark-python را با base_url به کار ببرید. بستهٔ انجمنی postmarker نمی‌تواند به مسیری زیر یک میزبان برسد، پس اینجا کار نمی‌کند. در PHP، PostmarkClient::$BASE_URL طرح، میزبان و مسیر را بدون خط مورب پایانی می‌گیرد. این مقدار static است، پس برای همهٔ کلاینت‌های Postmark در فرایند اعمال می‌شود، از جمله PostmarkAdminClient.

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

نقطه‌های پایانی‌ای که پاسخ داده می‌شوند POST /email، /email/batch، /email/withTemplate و /email/batchWithTemplates هستند. نام فیلدها با هر بزرگی و کوچکی حروف جور می‌شوند، مثل Postmark، و رشتهٔ خالی نیامده به حساب می‌آید.

Postmarkدر OpenEmail
Fromفرستنده، همراه با نامش.
Toگیرنده‌هایی که با ویرگول جدا شده‌اند. همراه با Cc و Bcc، تا 50 برای هر پیام.
ReplyToیک نشانی پاسخ.
Subjectموضوع.
HtmlBodyبدنهٔ HTML. TextBody بدنهٔ متنی می‌شود، و یکی از این دو لازم است.
Headersسرآیندهای سفارشی که به‌صورت Name و Value داده می‌شوند: X-*، List-*، Reply-To، Precedence، Auto-Submitted، Importance، Priority و Feedback-ID.
Attachmentsفایل‌ها، حداکثر 20 عدد و روی هم 5 مگابایت. تصویری که HTML شناسهٔ ContentID آن را به‌صورت cid: به کار می‌برد، در همان جایی که آمده جاسازی می‌شود. هر فایل دیگر به‌صورت پیوست معمولی می‌رسد.
Tagبرچسبی با نام tag.
Metadataبرچسب‌هایی با همان نام‌ها و مقدارها. همراه با Tag، حداکثر 10 برای هر پیام.
TrackOpensردیابی باز شدن را برای پیام روشن یا خاموش می‌کند.
MessageStreamoutbound، یا شناسهٔ هر جریان تراکنشی دیگر، پیام را مثل همیشه می‌فرستد.
TemplateAliasslug یا شناسهٔ (tpl_...) یک قالب OpenEmail، که با TemplateModel پر می‌شود. InlineCss پذیرفته می‌شود و چیزی را تغییر نمی‌دهد.

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

  • TemplateId، با ErrorCode 1101. شناسهٔ قالب Postmark اینجا معنایی ندارد، پس قالب را در OpenEmail دوباره بسازید و slug یا شناسهٔ آن را در TemplateAlias بفرستید.
  • جریان broadcast، با ErrorCode 1236. این نقطه‌های پایانی نامهٔ تراکنشی می‌فرستند، و خبرنامه‌ها به‌صورت ارسال‌های گروهی OpenEmail می‌روند.
  • Subject، HtmlBody یا TextBody در پیامی با قالب، با ErrorCode 1123، چون قالب آن‌ها را فراهم می‌کند. TrackLinks با مقدار TextOnly، چون OpenEmail پیوندهای بخش HTML را ردیابی می‌کند.
  • بیش از یک نشانی پاسخ، سرآیندی که دو بار یا بیرون از فهرست بالا آمده باشد، بیش از 10 برچسب، و نام برچسب یا Metadata که چیزی جز حرف، رقم، _ و - داشته باشد.
  • دسته‌ای با بیش از 100 پیام، با ErrorCode 410. Postmark تا 500 می‌پذیرد، پس دسته‌های بزرگ‌تر را تقسیم کنید.

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

  • هر ارسال با 200 همراه با To، SubmittedAt، MessageID، ErrorCode برابر 0 و Message برابر OK پاسخ می‌دهد. MessageID شناسهٔ پیام OpenEmail است، همان که GET /emails/{id} و وب‌هوک‌ها به کار می‌برند. سرآیند Idempotency-Key مثل بقیهٔ API کار می‌کند.
  • هر دسته با 200 و یک نتیجه برای هر پیام، به همان ترتیب، پاسخ می‌دهد. پیامی که شکست خورده فقط ErrorCode و Message خودش را دارد، و بقیه همچنان می‌روند.
  • خطاها به‌صورت ErrorCode و Message برمی‌گردند. کلید ناموجود یا ناشناخته، یا کلیدی بدون emails:send، پاسخ HTTP 401 با ErrorCode 10 می‌گیرد. بقیه HTTP 422 می‌گیرند: ErrorCode 300 برای خود پیام، 400 برای نشانی From که کلید اجازهٔ استفاده از آن را ندارد، 401 برای دامنه‌ای که هنوز نمی‌تواند بفرستد، 402 برای بدنه‌ای که JSON نیست و 405 برای فضای کاری‌ای که سهمیهٔ ارسالش را تمام کرده است. HTTP 413 یعنی بدنه از 10 مگابایت، یا برای یک دسته از 50 مگابایت، بیشتر است یا پیوست‌ها از 5 مگابایت بیشترند.