هنگامی که اولین کاربران به سیستم عامل شما می آیند ، شما نمی خواهید بفهمید که چگونه می توانید زیرساخت های ایمیل خود را به روز نگه دارید. بنابراین ، چه کاری می توانیم در مورد آن انجام دهیم؟

این پنجمین قسمت از مجموعه "ساختمان بازار آنلاین از خراش" است. در این بخش از سری های ما ، ما می آموزیم که چگونه پلتفرم شما را قادر به ارسال ایمیل با ارائه دهندگان ایمیل اول API کنید. و چگونه اجازه دهید همکاران غیر فنی خود بدون ایجاد وقت برنامه نویسان ، قالب های ایمیل ایجاد و اصلاح کنند.
هر مشاغل تجارت الکترونیکی ایمیل های زیادی ارسال می کند. بخشی از یک کمپین بازاریابی یا پردازش پرداخت ، تقریباً هر عملیات یا فرآیند اغلب با یک پیام ایمیل پیچیده می شود. با این حال ، پیکربندی و نگهداری سرور ایمیل پیچیده است. این در واقع یک رشته تحصیلی جداگانه است هنگامی که فشار به بیل می آید و اولین کاربران به سیستم عامل می آیند ، شما واقعاً نمی خواهید بفهمید که چگونه می توانید زیرساخت های ایمیل خود را به روز نگه دارید. شما به وضوح نمی خواهید نگران تحویل ایمیل باشید.
2 نوع ایمیل
بازار آنلاین که ما می ساختیم ، بلکه هر شرکت آنلاین دیگری در آنجاست ، برای برقراری ارتباط با کاربران و سایر ذینفعان ، به 2 نوع ایمیل نیاز دارد:
– تبلیغات محتوا و پیشنهادات [19659008] – نامه های فروش و ارتباطات
– رسید و اطلاعیه های حمل و نقل
– به روزرسانی های حساب
– تغییر رمز عبور
– به روزرسانی های وضعیت سفارش
در مورد یک تجارت زودهنگام مانند Manufaktura ، اولین دسته ایمیل ها با راه حل های ارائه شده توسط محصولاتی مانند MailChimp یا GetResponse متناسب است. آنها روشی ساده برای پخش و نظارت بر فعالیتهای بازاریابی که از طریق کانال ایمیل انجام می شود ارائه می دهند. مکانیک ایمیل های بازاریابی برای شروع اولیه کاملاً متداول است ، بنابراین ضربه زدن به یکی از محصولات ذکر شده این کار را انجام خواهد داد. در این مقاله ، با این حال ، ما می خواهیم به ایمیل های معاملاتی متمرکز شویم.
نوع و فرکانس ایمیل های متقابل از یک شرکت به شرکت دیگر ، از یک فرآیند تا پردازش دیگر متفاوت است. به همین دلیل باید در وهله اول راهی برای ارسال پیامهای بسیار قابل تنظیم پیدا کنیم. علاوه بر این ، دیر دیرتر یاد خواهید گرفت که چگونه می توانید الگوهای بازاریابی و اصلاح محتوای را برای بازاریاب ها و تیم خدمات مشتری قابل دسترسی کنید.
پاسخ این موضوعات با ارائه دهندگان خدمات ایمیل برنامه نویسی است. بیایید این رویکرد را بصورت گام به گام بررسی کنیم.
ارائه دهنده ایمیل اول API
ارائه دهندگان خدمات ایمیل (ESP) مانند SendGrid ، Mandrill یا SparkPost جادوی پیکربندی سرور ایمیل را برای شما خلاصه می کنند. آنها عملکرد ایمیل را در پشت یک API REST ساده قرار می دهند. تمام کاری که شما باید انجام دهید تأیید اعتبار است و از نقاط پایانی مربوط به تماس مانند این بخش استفاده می کند:
{{CODE}
const sgMail = نیاز ('@ sendgrid / mail')؛
sgMail.setApiKey (فرآیند env.SENDGRID_API_KEY)؛
const msg = {
to: '[email protected]'،
from: '[email protected]'،
موضوع: 'ارسال با SendGrid سرگرم کننده است' ،
متن: 'و انجام هر کار آسان ، حتی با Node.js' ،
html: ' و انجام هر کار آسان ، حتی با Node.js ' ،
}؛
sgMail.send (msg)؛
{COD ENDCODE}
با استفاده از این ابزار می توانید نگرانی در مورد موضوعات مرتبط از قبیل:
- نرخ تحویل – ESP ها فقط به این موضوع توجه کرده اند.
- گزارش – از جعبه ای که جمع می شوید ، خلاصه نرخ های باز و کلیک کنید
- بخش عمده ای ارسال می شود – ارسال میلیاردها کد در ماه بقیه اطمینان می دهند که آنها می دانند چگونه دسته های ایمیل خود را کنترل کنید
- فیلتر کردن ایمیل – ES PS بطور خودکار ارسال ایمیل به پرش ها ، صندوق های پستی مسدود شده ، گزارشگرهای ناخواسته یا ایمیل های اشتباه را متوقف می کند
- مدیریت فهرست نشده اشتراکی
- تنظیم دامنه های سفارشی
اما بیشترین فایده از استفاده از ESP ، به ویژه در مرحله اولیه ، این واقعیت ارزان است. . می توانید خلاصه قیمت گذاری شده توسط Zapier را ببینید تا چیزی کمتر از 100 دلار در ماه ارائه شود ، که اغلب با سهمیه رایگان قابل توجهی در بالای آن ارائه می شود.
هر ESP جوانب مثبت و منفی خود را دارد ، اما آنها اکثر آنها را ارائه می دهند. همان سرویس. در هنگام انتخاب ارائه دهنده خود ، جدا از سهمیه رایگان ، باید به کیفیت SDK ها ، سایر ویژگی های بازاریابی ، UI نیز توجه کنید – تمام مواردی که در سرعت حرکت در کشتی تأثیر می گذارد. در اوایل سکوی خود ، می توانید ارائه دهنده را خیلی راحت تغییر دهید.

در Voucherify ما از SES برای ایمیل های داخلی استفاده می کنیم ، اما مشتری های ما می توانند برای ارسال ایمیل کوپن ، حساب های Mandrill یا SendGrid را به یکدیگر متصل کنند. از طرف آنها.

در این آموزش ، SendGrid را امتحان خواهیم کرد.
در هنگام ارسال ایمیل به دنبال چه چیزی بگردید
ارسال ایمیل یک چیز ساده است. همانطور که در بالا مشاهده می کنید ، فقط در چند خط کد پایین می آید. اما برخی از اعمال خوب و همچنین میوه های کم آویز هم زمان وجود دارد. شما می توانید یک موتور ایمیل معرفی کنید که در آینده سردردهای شما را کاهش می دهد.
Fallback
هر ارائه دهنده SaaS / IaaS روزی (حتی AWS) با مشکلاتی روبرو می شود. بنابراین ، عاقلانه است که نوعی ارائه دهنده بازپرداخت را متصل کنید. تلاش بزرگ نیست – فقط کافی است پاسخ هایی را که از ESP اولیه دریافت می کنید تماشا کنید و در صورت بروز خطا با دیگری تماس بگیرید.
اگرچه ، این راه حل شما را از سکسکه های جزئی محافظت می کند ، گاهی اوقات ارائه دهنده شما با خاموشی گسترده مواجه می شود. در این حالت ، معقول است که سرویس ایمیل خود را به گونه ای تنظیم شود که امکان تغییر سریع ESP را فراهم کند.
همچنین شایان ذکر است که پیامدهای خطاهای تصادفی از ESP شما نیز می تواند با اجرای یک خط مشی دوباره امتحان کاهش یابد.
BCC
در روزهای اول ایمیل ، هنگامی که ترافیک کم است ، اما هر پیام ارائه شده به تجربه کلی مشتری افزوده می شود ، منطقی است که اطمینان حاصل شود که نامه های الکترونیکی همانطور که انتظار می رود پرواز می کنند. شما یا تیم خود را به BCC اضافه کنید تا 99.9٪ تأیید را دریافت کنید. همه ایمیل ها به خوبی انجام می شوند.
حالت تست
برای اهداف آزمون ، شما ممکن است بخواهید از سهمیه رایگان خود استفاده نکنید. در نظر بگیرید که حساب های مختلفی را برای حالت test / dev ایجاد کنید – حتی می تواند یک حساب Gmail باشد. یا ، شاید شما ممکن است بخواهید ایمیل را بطور کامل پرش کنید.
به این مثال از خدمات ایمیل نگاهی بیندازید. این کد برای معرفی بهترین کارهایی که اخیراً ذکر کردیم آماده است (fallback، bcc، mode mode)
{{CODE}
class SendgridService {
سازنده (پیکربندی) {
this.client = sendgrid (config.sendgrid.api_key)؛
}
send (گزینهها) {
قول جدید (بازگشت ، رد کردن) => {
this.client.send (گزینه ها ، عملکرد (خطا ، نتیجه) {
if (error) {
console.error ("(ارسال) عدم موفقیت – پیام:٪ j خطا:٪ j" ، گزینه ها ، خطا) ؛
بازگشت رد (خطا) ؛ [19659008]}
console.log ("(ارسال) موفقیت – پیام:٪ j نتیجه:٪ j" ، گزینه ها ، نتیجه) ؛
حل بازگشت (نتیجه) ؛
}) ؛
}) ؛
}
}
class EmailService {
const ructor (گزینه ها ، پیکربندی = پیکربندی) {
this.config = پیکربندی ؛
this.provider = Sendgrid جدید (گزینه ها ، پیکربندی) ؛
}
ارسال (گزینه ها ، record_info) {
if (_.contains ([ “sandbox”, “dev” ]، this.config.env.name)) {
options.to = this.config.email.test_recipient؛
options.bcc = تعریف نشده؛
// دیگر چیزهای مرتبط با آزمون
}
console.log ("ارسال ایمیل از:٪ s به:٪ s" ، گزینه ها.from ، options.to) ؛
this.provider.send (گزینه ها) [19659008] .then (نتیجه => {
// برخی از ورود به سیستم / عمل در صورت موفقیت
نتیجه بازگشت ؛
})
.catch (خطا => {
// برخی از ورود / عمل در صورت بروز خطا ، می تواند به صورت خطا باشد یا دوباره امتحان شود
Return Promise.reject (خطا) را برگردانید ؛
})؛
}
}؛
{{ENDCODE}}
اصلاح محتوا
وقتی شروع می کنید و شرایط مورد نیاز در سنگ تنظیم نشده است ، فرض کنید که طراحی ایمیل و متن تغییر خواهد کرد ، زیاد است. بهتر است شما برای این امر آماده باشید.
اولین قدم برای رسیدگی به مطالب که اغلب در حال تغییر است خارج از جعبه پشتیبانی می شود – شما فقط قالب ها را در پرونده های HTML جداگانه نگه دارید و پارامتر "options.html" را تغییر دهید تا به آن اشاره کنید. مسیر مربوطه ایمیل HTML سپس توسط SendGrid ارائه می شود و کد ارسالی دست نخورده باقی می ماند. اما بیایید این کار را یک قدم به جلو برداریم.
فعلاً ، هنگامی که بازاریابی می خواهد یک نسخه را اصلاح کند ، باید از شما بپرسد. شما نمی خواهید به آنها اجازه دهید خودشان آن را تغییر دهند زیرا می توانند الگوی HTML را بشکنند. چگونه می توان این مشکل را کنار زد تا بازاریاب ها یا افراد خدمات مشتری بتوانند محتوا را مدیریت کنند – مانند نمونه در MailChimp؟
خوشبختانه ، ما یک راه حل ارزان و آسان برای استفاده داریم. با کمک Contentful (یکی دیگر از ابزارهای API اول ، CMS بدون سر) و برنامه منبع باز ما ، می توانید نسخه الگوهای ایمیل را برای نویسندگان نسخه در دسترس تهیه کنید. اینگونه کار می کند:
- نويسندگان کپی نسخه های ایمیل را در ویرایشگر محتوا ایجاد و ویرایش می کنند. آنها این کار را به اصطلاح "حالت پیش نویس" انجام می دهند. این فقط مربوط به متن است – آنها نمی توانند به هیچ وجه الگوی HTML را تغییر دهند.
- قبل از اینکه پیام را به سمت تولید برسانند ، می توانند نسخه نهایی ایمیل را پیش نمایش دهند. این با مراجعه به برنامه وب پست الکترونیکی Contentful ، که یک نسخه از Contentful را بر اساس الگوی HTML فعلی ارائه می دهد ، حاصل می شود.
- اگر همه چیز خوب باشد ، نسخه به تولید می رود.
- اگر بخواهند نسخه ای را به روز کنند ، آنها دوباره وضعیت را برای پیش نویس و آزمایش دوباره تغییر می دهند ، در عین حال نسخه قدیمی هنوز هم در تولید خوب است.
توضیحات کامل این ابزار را می توانید در این مقاله پیدا کنید.
چه زمانی ایمیل ارسال کنید
وقتی که آمد در بازارهای آنلاین ، ده ها موقعیت وجود دارد که باید یا باید ایمیل بفرستید. ما نمی توانیم آنها را در اینجا لیست کنیم ، زیرا این کار خیلی خاص است. با این حال ، می توانید فرض کنید برخی از ایمیل ها هنگام تغییر وضعیت ، 100٪ ارسال می شوند. همانطور که از مقاله های قبلی ما به یاد دارید ، سفارشات Manufaktura توسط Salesforce مدیریت می شود. اکنون ، در آخرین پست ما نشان داده ایم که هر بار وضعیت سفارش تغییر می کند ، ما درخواست خارجی خود را در مورد این واقعیت آگاه می کنیم. سپس برنامه کاربردی این فراخوان را کنترل می کند و این مکان مناسبی برای قرار دادن قابلیت ارسال ایمیل است ، به عنوان نمونه برای به روزرسانی وضعیت در انتظار تا پایان مراجعه کنید:
{{CODE}}
var Logger = need (" ./../../../../logger")؛ موفق19659008pozvar email_service = نیاز ("./../../../../.. خدمات / ایمیل")؛
var logger = Logger جدید ({پیشوند: "سفارش / حالت / اعتبار در انتظار") [)؛
module.exports = تابع (درخواست ، پاسخ) {
var order = درخواست.body.order؛
var account = request.body.account؛
if (! order ||! order.Id ||! حساب ||! account.Id) {
logger.error ("سفارش یا حساب کاربری تعریف نشده است | داده ها :٪ j "، order.body)؛
Return پاسخ.status (200) .end ()؛
}
logger.info (" سفارش:٪ s حساب:٪ s "، سفارش.Id ، account.Id) ؛
پاسخ.status (200) .end ()؛
email_service.send ({
"از": {
"email": "[email protected]"،
"name": "Team Manufaktura"
}،
"personalizations": [{
"جانشینی": {
"[ [مشتری نام]] ": account.Name || "" ،
"[[[orderNumber]]": سفارش.OrderNumber || ""
} ،
"to": [{
"email": account.email__c || "[email protected]" ،
"name": account.Name
}]
}]،
"موضوع": "خوش آمدید" ،
"template_id": "f534796e- c338-4f01-9242-bfa7ec070b38 "
})
.then (result => {
logger.info (" ایمیل ارسال شده – سفارش:٪ s حساب:٪ s نتیجه:٪ j "، سفارش). شناسه ، حساب.Id ، نتیجه) ؛
})
.catch (error => {
logger.error ("ایمیل ارسال نشده است – سفارش:٪ s حساب:٪ s پیام:٪ s خطا: ٪ j Stack:٪ j "، order.Id، account.Id، خطا ، خطا ، && error.stack)؛
})؛
}؛
{{ENDCODE}}
ساختار به راحتی قابل گسترش است ، شما فقط باید برای هر وضعیت موجود در برنامه ، یک کنترل کننده فراخوان اضافه کنید.
مسئله جایزه – قابلیت تحویل حل شده
ما داستانی برای اشتراک گذاری داریم. برای یکی از پروژه های ما ، قابلیت ارسال ایمیل اولویت اصلی بود. اگر کاربر به درستی سوار نشده باشد ، مشاغل به شدت آسیب می بینند. ما از Mandrill برای ایمیل های خود استفاده کردیم. اگرچه از ابتدا به درستی پیکربندی شده بود (با پشتیبانی Mandrill تأیید شد) ، برخی از کاربران به عنوان مثال دعوت نامه ها را دریافت نکردند. در واقع ، اینگونه نیست که آنها آن را دریافت نکردند. آنها در اسپم فرود آمدند ، اصلاً تحویل داده نشد. برای بدتر شدن امور ، هیچ قانونی برای این نوع حادثه وجود نداشت. هم زمان و هم دامنه تحت تأثیر تصادفی بودند.
ما گمان کردیم که مشکل به وجود آمده است زیرا ما از سرورهای ایمیل Mandrill Shared Email استفاده کرده ایم (یک آی پی که توسط چندین کاربر استفاده شده است) و این پیکربندی ممکن است از نظر اسپم امتیاز ما را کاهش دهد. اما این یک مرحله خیلی زود بود و ما spamin نکردیم.
ما تصمیم گرفتیم به SendGrid برویم اما این کمکی نکرد. به عنوان آخرین راه حل ، ما تصمیم گرفتیم یک IP اختصاصی را در Mandrill بخریم و مانند جذابیت عمل کند. اما نکته جالب این است که تیم پشتیبانی ماندریل این مسئله را تشویق نمی کند ، زیرا از نظر آنها باعث می شود که تحویل ما برای یک کاربر با حجم کم ، مانند ما ، کاهش یابد.
همچنین ، در وهله اول مشکل به سختی مشاهده می شد ، زیرا گزارش تحویل ماندریل نشان نمی دهد که نامه ارسال شده است ، اما فقط با موفقیت ارسال شده است. ما مجبور شدیم در UI عمیق تر حفاری کنیم تا لیستی از رویدادهای SMTP را بیابیم و از جنگل جزئیات برویم تا ببینیم پیام ها به هدف رسیده اند.
خلاصه
بازار آنلاین ما – Manufaktura – مجهز شده است به کانال ارتباطی قدرتمند. ما با توجه به قوانینی که در مقاله اول بیان کردیم – با تمرکز روی سرعت و قابلیت نگهداری – به این ویژگی نزدیک شدیم. چیزهایی که به نرم افزار ما نیاز دارد در محیط شغلی که به طور مداوم در حال تغییر است.
ارائه دهندگان خدمات ایمیل اول API به ما امکان ساخت یک دستگاه ایمیل را فقط با چند خط دادند و برنامه ایمیل های Contentful-email به تیم بازاریابی و خدمات مشتری کمک کرد تا در این زمینه پیشرفت کنند. محتوا بدون ایجاد مزاحمت برای توسعه دهندگان.
اکنون ، وقتی ایمیل کار می کنیم می توانیم به پرداخت بپردازیم!