برنامه نویسی

ایمیل های تراکنشی: یک دیدگاه بلند مدت

Summarize this content to 400 words in Persian Lang
ارسال ایمیل تقریباً برای همه برنامه ها و بازی های مدرن ضروری شده است. رایج ترین نوع ایمیل در اولین برنامه شما تراکنشی است. نمونه‌هایی از ارتباطات تراکنشی شامل تأیید سفارش، درخواست‌های بازنشانی رمز عبور، اعلان‌های حساب و یادآوری‌های قرار است. خوشبختانه، مایکروسافت این کار را بسیار ساده کرده است. به حدی که ممکن است در مورد نحوه ارسال ارتباطات برنامه خود زیاد فکر نکنید. و این اشکالی ندارد – همه ما ضرب الاجل هایی برای رعایت کردن داریم.

شروع به کار

هنگامی که ارتباطات تراکنشی مورد نیاز برای برنامه خود را شناسایی کردید، باید تصمیم بگیرید که چگونه آنها را ارسال کنید. باز هم، شما در اینجا هم خوش شانس هستید. هنگام تصمیم گیری در مورد نحوه ارسال ایمیل، چند گزینه مختلف دارید. برای ساده نگه داشتن کارها، می توانید با استفاده از یک سرور SMTP تاسیس شده شروع کنید. نمونه های بی شماری از نحوه استفاده از Gmail، Zoho و سایر سرویس های SMTP شخص ثالث وجود دارد. این به اندازه کافی ساده است و شما را از طریق توسعه و حتی به مرحله MVP می رساند.

همانطور که برنامه شما رشد می کند، ممکن است متوجه شوید که توسط سرویس SMTP با نرخ محدود شده اید، خطاهای گذرا در حال رخ دادن هستند و راه حل ساده ایمیل شما دیگر استرس برنامه در حال رشد شما را تحمل نمی کند. اول از همه، تبریک! برنامه شما در حال رشد است! دوم، زمان آن رسیده است که استراتژی ارتباطات خود را دوباره مرور کنیم. تو اینجا هم خوش شانسی API های شخص ثالث متعدد ارسال ایمیل را آسان تر می کند. خدماتی مانند SendGrid، Mailgun و ZeptoMail همگی دارای مزایا و معایب خاص خود و طیف گسترده ای از ویژگی ها هستند. اکنون، می‌توانید کارهای بسیار منظمی با ایمیل‌های خود انجام دهید. باز هم، استراتژی ارتباطات شما تکامل یافته است، و پیچیدگی آن نیز تغییر کرده است.

قایقرانی روان…

شما سرویس شخص ثالثی را که دوست دارید انتخاب کرده اید، و عالی کار می کند. شما یک سرویس ایمیل با استفاده از SDK آنها ایجاد کرده اید. اکنون می توانید به رشد برنامه، تیم و کسب و کار خود بازگردید. متأسفانه، یک ایمیل از سرویس شخص ثالث خود دریافت می کنید. دوباره قیمت هاشون رو بالا میبرن… یا بدتر از آن، آنها قابلیتی را که شما به شدت از آن استفاده می‌کردید به پشت یک دیوار پرداخت گران قیمت منتقل کرده‌اند.

وقت آن است که سرویس خود را تغییر دهید… دوباره. این به طور کلی یک معامله بزرگ نیست، درست است؟ …درسته؟! ادغام یک سرویس ایمیل جدید فقط یک روز طول کشید. اما برنامه به سرعت در حال رشد است، ما بدهی های فناوری داریم و همه ایمیل های ما ثابت نیستند. مشکل بزرگی نبود، اما سرویس جدید قالب‌های قدیمی و قدیمی ما را کنترل نمی‌کند.

در حالی که ممکن است فقط یک آزاردهنده خفیف باشد که فقط هر چند سال یک بار سر زشت خود را بالا می برد، شما یک برنامه موفق دارید. شما زمانی برای یادگیری یک سرویس جدید، یک API جدید، تمام ویژگی های یک سرویس جدید و تست رگرسیون همه ارتباطات خود را ندارید… دوباره. به همین دلیل است که کتابخانه ارتباطات متن باز Transmitly ایجاد شد.

انتقال – چه کسی؟

کتابخانه Transmitly یک کتابخانه منبع باز است که برای مدیریت و کنترل ارتباطات تراکنش های خروجی از جمله ایمیل ها، پیامک ها و اعلان های فشاری طراحی شده است. مدیریت ارتباطات متمرکز را ارائه می دهد و به توسعه دهندگان این امکان را می دهد که چندین کانال ارتباطی را از یک پلتفرم مدیریت کنند.

Transmitly پیکربندی انعطاف‌پذیری را ارائه می‌کند و امکان جابه‌جایی آسان بین SMTP (MailKit) و ارائه‌دهندگان خدماتی مانند SendGrid، Twilio و Infobip را بدون تغییر کد دامنه فراهم می‌کند. این ترکیب و تحویل پیام را ساده می کند و به طور یکپارچه با ظروف تزریق وابستگی مختلف و موتورهای الگو یکپارچه می شود.

و اکنون برای چیزی کاملاً متفاوت

Transmitly بر اساس مفاهیمی ساخته شده است که توسط Serilog، Microsoft، و بسیاری دیگر از کتابخانه‌های توسعه‌پذیری پیشگام ساخته شده‌اند. در هسته خود، Transmitly به شما این امکان را می دهد که به همان اندازه که زمان یا تلاش برای استفاده دارید، یکپارچگی را انتخاب کنید.

ایده را دوست دارید؟ کل پایگاه کد خود را در یک یا دو روز تبدیل کنید. مطمئن نیستید؟ برای شروع آن را فقط در ارتباطات تراکنشی جدید امتحان کنید. این به شما بستگی دارد.

این همه توسعه پذیری بدون برخی جنبه های منفی به دست نمی آید. روش “مفاوت” برای انجام کارها وجود خواهد داشت. و با موارد مختلف، اصطلاحات جدیدی وجود دارد که باید قبل از اینکه بتوانیم دامنه کامل آنچه ممکن است را درک کنیم، باید آنها را درک کنیم.

کانال ها

کانال پایه همه ارتباطات است. خارج از جعبه، Transmitly از ایمیل، پیامک و اعلان‌های فشاری پشتیبانی می‌کند. اما شما محدود به این کانال ها نیستید. Transmitly با در نظر گرفتن قابلیت توسعه در هر زمان ساخته شده است. این بدان معناست که اگر به هر نوع کانالی مانند ایمیل فیزیکی، فکس یا اسلک نیاز دارید، عملاً می توان هر نوع کانالی را در آن تعبیه کرد.

ارائه دهندگان کانال

ارائه دهندگان کانال کارهای سنگین را برای کانال های شما انجام می دهند. یک ارائه دهنده کانال می تواند از یک تا چندین کانال پشتیبانی کند. به عنوان مثال می‌توان به MailKit (ایمیل SMTP)، SendGrid (ایمیل)، Infobip (ایمیل و پیامک) یا Firebase (اعلان‌های فشار iOS/Android/App) اشاره کرد.

خطوط لوله

خطوط لوله جایی هستند که قدرت واقعی Transmitly شروع به تحقق می کند. با یک خط لوله، کنترل مدیریت ارتباطات را در یک مکان به دست خواهید آورد. همچنین می توانید مدیریت کنید که کدام ارتباطات در دسترس هستند و کدام ارائه دهندگان کانال مجاز به ارسال آنها هستند.

همین! در حال حاضر، حداقل. چند مفهوم پیشرفته تر وجود دارد که انتقال Transmitly را حتی شیرین تر می کند. در حال حاضر، ما به اصول اولیه پایبند هستیم تا شما را در اسرع وقت به سرعت برسانیم. پس از همه، شما یک برنامه به سرعت در حال رشد برای نگهداری دارید!

کد نوشتن

ابتدا باید کتابخانه Transmitly NuGet را در برنامه خود نصب کنید:

# Install the base Transmitly package
dotnet install Transmitly

# To make our lives easier, we’ll use the optional MS DI extensions
dotnet install Transmitly.Microsoft.Extensions.DependencyInjectionbash

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، موضوع ایمیل خود را با ایجاد مجدد یک ایمیل خوشامدگویی که برای کاربر تازه ثبت‌نام‌شده برنامه شما ارسال می‌شود، ادامه می‌دهیم.

Startup.cs

using Transmitly;

var builder = WebApplication.CreateBuilder(args);
var emailConfig = builder.Configuration.GetRequiredSection(“EmailSettings”).Get<EmailSettingsConfiguration>();

builder.Services.AddTransmitly(tly =>
{
// Pipelines allow you to define your communications
// as a domain action. This allows your domain code to
// stay agnostic to the details of how you
// may send out a transactional communication.
tly.AddPipeline(“WelcomeKit”, pipeline =>
{
// AsIdentityAddress() is also a convenience method that helps us create an audience identity
// Identity addresses can be anything: email, phone, or even a device/app ID for push notifications!
pipeline.AddEmail(“welcome@my.app”.AsIdentityAddress(“Welcome Committee”), email =>
{
// Transmitly is a bit different. Most channel content is configured by using
// templates. The immediate benefit out of the box is being able to configure
// culture-based templates.
// For this example, we’ll keep things simple and send a static message.
// But as you may have guessed, Transmitly also has Template Engine plugins as well.
email.Subject.AddStringTemplate(“Thanks for creating an account!”);
email.HtmlBody.AddStringTemplate(“Check out the Getting Started section to see all the cool things you can do!”);
email.TextBody.AddStringTemplate(“Check out the Getting Started (https://my.app/getting-started) section to see all the cool things you can do!”);
});
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، می‌توانیم این کیت خوش‌آمدگویی را در همان مکانی که برای ارسال ایمیل خود استفاده می‌کردیم، راه‌اندازی کنیم. توجه داشته باشید که وقتی جزئیات ارتباطات را حذف می کنیم، منطق دامنه شما چقدر ساده می شود.

استفاده از Transmitly:

public class RegistrationService
{
private readonly ICommunicationsClient _commsClient;

public RegistrationService(ICommunicationsClient commsClient)
{
_commsClient = commsClient ?? throw new ArgumentNullException(nameof(commsClient));
}

public async Task<User> RegisterUser(string email, AccountDetail detail)
{
// Create user
var newUser = new User(email);
// Trigger the welcome kit email
var result = await _commsClient.DispatchAsync(“WelcomeKit”, email, TransactionalModel.Create(new { }));
if (result.IsSuccessful)
return newUser;
throw new RegistrationException(“Registration failed. Rollback!”);
}
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر این کد جدید را … از نظر فنی اجرا کنید، کار خواهد کرد. با این حال، از اینکه دیگر ایمیلی ارسال نمی کنید، ناامید خواهید شد. این به این دلیل است که ما هنوز “چگونگی” ارسال ایمیل ها را تعریف نکرده ایم. با Transmitly، “چگونه” یا خدمات به عنوان ارائه دهندگان کانال نامیده می شود. ارائه دهندگان کانال همان چیزی هستند که از نام آن پیداست: آنها ارائه دهندگان هر کانالی هستند (ایمیل، پیامک، فشار و غیره).

# We want to continue using SMTP for now, so we’ll add the MailKit extension
dotnet install Transmitly.ChannelProvider.MailKit

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون می‌توانیم تنظیمات سرور SMTP را که Transmitly برای WelcomeKit ما استفاده می‌کند، پیکربندی کنیم.

using Transmitly;

var builder = WebApplication.CreateBuilder(args);
var emailConfig = builder.Configuration.GetRequiredSection(“EmailSettings”).Get<EmailSettingsConfiguration>();

builder.Services.AddTransmitly(tly =>
{
// Configure the MailKit Channel Provider Settings
tly.AddMailKitSupport(mailkit =>
{
mailkit.Host = emailConfig.Host;
mailkit.UseSsl = emailConfig.UseSsl;
mailkit.Port = emailConfig.Port;
mailkit.UserName = emailConfig.Username;
mailkit.Password = emailConfig.Password;
})
// Pipelines allow you to define your communications
// as a domain action. This allows your domain code to
// stay agnostic to the details of how you
// may send out a transactional communication.
.AddPipeline(“WelcomeKit”, pipeline =>
{
// AsIdentityAddress() is also a convenience method that helps us create an audience identity
// Identity addresses can be anything: email, phone, or even a device/app ID for push notifications!
pipeline.AddEmail(“welcome@my.app”.AsIdentityAddress(“Welcome Committee”), email =>
{
// Transmitly is a bit different. Most channel content is configured by using
// templates. The immediate benefit out of the box is being able to configure
// culture-based templates.
// For this example, we’ll keep things simple and send a static message.
// But as you may have guessed, Transmitly also has Template Engine plugins as well.
email.Subject.AddStringTemplate(“Thanks for creating an account!”);
email.HtmlBody.AddStringTemplate(“Check out the Getting Started section to see all the cool things you can do!”);
email.TextBody.AddStringTemplate(“Check out the Getting Started (https://my.app/getting-started) section to see all the cool things you can do!”);
});
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از استقرار کد خود، ارسال یک ایمیل ساده می‌تواند مانند قبل آسان باشد.

اگر SMTP دیگر برای برنامه شما مناسب نیست، ارائه دهنده کانال دیگری را امتحان کنید.

افزودن پیامک یا پوش نوتیفیکیشن؟ ترجیحات ارتباطی؟ خطوط لوله خود را تغییر دهید تا بدون زحمت کانال های جدید اضافه کنید. مدیریت تنظیمات برگزیده ارتباط کاربر به همین سادگی است.

نتیجه گیری

همانطور که برنامه شما رشد می کند و تکامل می یابد، داشتن یک استراتژی ارتباطی انعطاف پذیر و مقیاس پذیر بسیار مهم است. Transmitly نه تنها فرآیند ارسال ارتباطات تراکنشی را ساده می کند، بلکه چارچوبی قوی برای مدیریت کانال ها و ارائه دهندگان کانال های مختلف فراهم می کند. این امر زمان صرف شده برای مدیریت منطق ارتباطی را کاهش می دهد و شما را قادر می سازد بر روی ساخت و بهبود برنامه اصلی خود تمرکز کنید.

اگر علاقه مند به یادگیری بیشتر هستید، مخزن Transmitly Github را بررسی کنید!

ارسال ایمیل تقریباً برای همه برنامه ها و بازی های مدرن ضروری شده است. رایج ترین نوع ایمیل در اولین برنامه شما تراکنشی است. نمونه‌هایی از ارتباطات تراکنشی شامل تأیید سفارش، درخواست‌های بازنشانی رمز عبور، اعلان‌های حساب و یادآوری‌های قرار است. خوشبختانه، مایکروسافت این کار را بسیار ساده کرده است. به حدی که ممکن است در مورد نحوه ارسال ارتباطات برنامه خود زیاد فکر نکنید. و این اشکالی ندارد – همه ما ضرب الاجل هایی برای رعایت کردن داریم.

شروع به کار

هنگامی که ارتباطات تراکنشی مورد نیاز برای برنامه خود را شناسایی کردید، باید تصمیم بگیرید که چگونه آنها را ارسال کنید. باز هم، شما در اینجا هم خوش شانس هستید. هنگام تصمیم گیری در مورد نحوه ارسال ایمیل، چند گزینه مختلف دارید. برای ساده نگه داشتن کارها، می توانید با استفاده از یک سرور SMTP تاسیس شده شروع کنید. نمونه های بی شماری از نحوه استفاده از Gmail، Zoho و سایر سرویس های SMTP شخص ثالث وجود دارد. این به اندازه کافی ساده است و شما را از طریق توسعه و حتی به مرحله MVP می رساند.

همانطور که برنامه شما رشد می کند، ممکن است متوجه شوید که توسط سرویس SMTP با نرخ محدود شده اید، خطاهای گذرا در حال رخ دادن هستند و راه حل ساده ایمیل شما دیگر استرس برنامه در حال رشد شما را تحمل نمی کند. اول از همه، تبریک! برنامه شما در حال رشد است! دوم، زمان آن رسیده است که استراتژی ارتباطات خود را دوباره مرور کنیم. تو اینجا هم خوش شانسی API های شخص ثالث متعدد ارسال ایمیل را آسان تر می کند. خدماتی مانند SendGrid، Mailgun و ZeptoMail همگی دارای مزایا و معایب خاص خود و طیف گسترده ای از ویژگی ها هستند. اکنون، می‌توانید کارهای بسیار منظمی با ایمیل‌های خود انجام دهید. باز هم، استراتژی ارتباطات شما تکامل یافته است، و پیچیدگی آن نیز تغییر کرده است.

قایقرانی روان…

شما سرویس شخص ثالثی را که دوست دارید انتخاب کرده اید، و عالی کار می کند. شما یک سرویس ایمیل با استفاده از SDK آنها ایجاد کرده اید. اکنون می توانید به رشد برنامه، تیم و کسب و کار خود بازگردید. متأسفانه، یک ایمیل از سرویس شخص ثالث خود دریافت می کنید. دوباره قیمت هاشون رو بالا میبرن… یا بدتر از آن، آنها قابلیتی را که شما به شدت از آن استفاده می‌کردید به پشت یک دیوار پرداخت گران قیمت منتقل کرده‌اند.

وقت آن است که سرویس خود را تغییر دهید… دوباره. این به طور کلی یک معامله بزرگ نیست، درست است؟ …درسته؟! ادغام یک سرویس ایمیل جدید فقط یک روز طول کشید. اما برنامه به سرعت در حال رشد است، ما بدهی های فناوری داریم و همه ایمیل های ما ثابت نیستند. مشکل بزرگی نبود، اما سرویس جدید قالب‌های قدیمی و قدیمی ما را کنترل نمی‌کند.

در حالی که ممکن است فقط یک آزاردهنده خفیف باشد که فقط هر چند سال یک بار سر زشت خود را بالا می برد، شما یک برنامه موفق دارید. شما زمانی برای یادگیری یک سرویس جدید، یک API جدید، تمام ویژگی های یک سرویس جدید و تست رگرسیون همه ارتباطات خود را ندارید… دوباره. به همین دلیل است که کتابخانه ارتباطات متن باز Transmitly ایجاد شد.

انتقال – چه کسی؟

کتابخانه Transmitly یک کتابخانه منبع باز است که برای مدیریت و کنترل ارتباطات تراکنش های خروجی از جمله ایمیل ها، پیامک ها و اعلان های فشاری طراحی شده است. مدیریت ارتباطات متمرکز را ارائه می دهد و به توسعه دهندگان این امکان را می دهد که چندین کانال ارتباطی را از یک پلتفرم مدیریت کنند.

Transmitly پیکربندی انعطاف‌پذیری را ارائه می‌کند و امکان جابه‌جایی آسان بین SMTP (MailKit) و ارائه‌دهندگان خدماتی مانند SendGrid، Twilio و Infobip را بدون تغییر کد دامنه فراهم می‌کند. این ترکیب و تحویل پیام را ساده می کند و به طور یکپارچه با ظروف تزریق وابستگی مختلف و موتورهای الگو یکپارچه می شود.

و اکنون برای چیزی کاملاً متفاوت

Transmitly بر اساس مفاهیمی ساخته شده است که توسط Serilog، Microsoft، و بسیاری دیگر از کتابخانه‌های توسعه‌پذیری پیشگام ساخته شده‌اند. در هسته خود، Transmitly به شما این امکان را می دهد که به همان اندازه که زمان یا تلاش برای استفاده دارید، یکپارچگی را انتخاب کنید.

ایده را دوست دارید؟ کل پایگاه کد خود را در یک یا دو روز تبدیل کنید. مطمئن نیستید؟ برای شروع آن را فقط در ارتباطات تراکنشی جدید امتحان کنید. این به شما بستگی دارد.

این همه توسعه پذیری بدون برخی جنبه های منفی به دست نمی آید. روش “مفاوت” برای انجام کارها وجود خواهد داشت. و با موارد مختلف، اصطلاحات جدیدی وجود دارد که باید قبل از اینکه بتوانیم دامنه کامل آنچه ممکن است را درک کنیم، باید آنها را درک کنیم.

کانال ها

کانال پایه همه ارتباطات است. خارج از جعبه، Transmitly از ایمیل، پیامک و اعلان‌های فشاری پشتیبانی می‌کند. اما شما محدود به این کانال ها نیستید. Transmitly با در نظر گرفتن قابلیت توسعه در هر زمان ساخته شده است. این بدان معناست که اگر به هر نوع کانالی مانند ایمیل فیزیکی، فکس یا اسلک نیاز دارید، عملاً می توان هر نوع کانالی را در آن تعبیه کرد.

ارائه دهندگان کانال

ارائه دهندگان کانال کارهای سنگین را برای کانال های شما انجام می دهند. یک ارائه دهنده کانال می تواند از یک تا چندین کانال پشتیبانی کند. به عنوان مثال می‌توان به MailKit (ایمیل SMTP)، SendGrid (ایمیل)، Infobip (ایمیل و پیامک) یا Firebase (اعلان‌های فشار iOS/Android/App) اشاره کرد.

خطوط لوله

خطوط لوله جایی هستند که قدرت واقعی Transmitly شروع به تحقق می کند. با یک خط لوله، کنترل مدیریت ارتباطات را در یک مکان به دست خواهید آورد. همچنین می توانید مدیریت کنید که کدام ارتباطات در دسترس هستند و کدام ارائه دهندگان کانال مجاز به ارسال آنها هستند.

همین! در حال حاضر، حداقل. چند مفهوم پیشرفته تر وجود دارد که انتقال Transmitly را حتی شیرین تر می کند. در حال حاضر، ما به اصول اولیه پایبند هستیم تا شما را در اسرع وقت به سرعت برسانیم. پس از همه، شما یک برنامه به سرعت در حال رشد برای نگهداری دارید!

کد نوشتن

ابتدا باید کتابخانه Transmitly NuGet را در برنامه خود نصب کنید:

# Install the base Transmitly package
dotnet install Transmitly

# To make our lives easier, we'll use the optional MS DI extensions 
dotnet install Transmitly.Microsoft.Extensions.DependencyInjectionbash
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، موضوع ایمیل خود را با ایجاد مجدد یک ایمیل خوشامدگویی که برای کاربر تازه ثبت‌نام‌شده برنامه شما ارسال می‌شود، ادامه می‌دهیم.

Startup.cs

using Transmitly;

var builder = WebApplication.CreateBuilder(args);
var emailConfig = builder.Configuration.GetRequiredSection("EmailSettings").Get<EmailSettingsConfiguration>();

builder.Services.AddTransmitly(tly =>
{
    // Pipelines allow you to define your communications
    // as a domain action. This allows your domain code to 
    // stay agnostic to the details of how you
    // may send out a transactional communication.
    tly.AddPipeline("WelcomeKit", pipeline =>
    {
        // AsIdentityAddress() is also a convenience method that helps us create an audience identity
        // Identity addresses can be anything: email, phone, or even a device/app ID for push notifications!
        pipeline.AddEmail("welcome@my.app".AsIdentityAddress("Welcome Committee"), email =>
        {
            // Transmitly is a bit different. Most channel content is configured by using 
            // templates. The immediate benefit out of the box is being able to configure
            // culture-based templates. 
            // For this example, we'll keep things simple and send a static message.
            // But as you may have guessed, Transmitly also has Template Engine plugins as well.
            email.Subject.AddStringTemplate("Thanks for creating an account!");
            email.HtmlBody.AddStringTemplate("Check out the Getting Started section to see all the cool things you can do!");
            email.TextBody.AddStringTemplate("Check out the Getting Started (https://my.app/getting-started) section to see all the cool things you can do!");
        });
    });
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در مرحله بعد، می‌توانیم این کیت خوش‌آمدگویی را در همان مکانی که برای ارسال ایمیل خود استفاده می‌کردیم، راه‌اندازی کنیم. توجه داشته باشید که وقتی جزئیات ارتباطات را حذف می کنیم، منطق دامنه شما چقدر ساده می شود.

استفاده از Transmitly:

public class RegistrationService
{
    private readonly ICommunicationsClient _commsClient;

    public RegistrationService(ICommunicationsClient commsClient)
    {
        _commsClient = commsClient ?? throw new ArgumentNullException(nameof(commsClient));
    }

    public async Task<User> RegisterUser(string email, AccountDetail detail)
    {
        // Create user
        var newUser = new User(email);
        // Trigger the welcome kit email
        var result = await _commsClient.DispatchAsync("WelcomeKit", email, TransactionalModel.Create(new { }));
        if (result.IsSuccessful)
            return newUser;
        throw new RegistrationException("Registration failed. Rollback!");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر این کد جدید را … از نظر فنی اجرا کنید، کار خواهد کرد. با این حال، از اینکه دیگر ایمیلی ارسال نمی کنید، ناامید خواهید شد. این به این دلیل است که ما هنوز “چگونگی” ارسال ایمیل ها را تعریف نکرده ایم. با Transmitly، “چگونه” یا خدمات به عنوان ارائه دهندگان کانال نامیده می شود. ارائه دهندگان کانال همان چیزی هستند که از نام آن پیداست: آنها ارائه دهندگان هر کانالی هستند (ایمیل، پیامک، فشار و غیره).

# We want to continue using SMTP for now, so we'll add the MailKit extension
dotnet install Transmitly.ChannelProvider.MailKit
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون می‌توانیم تنظیمات سرور SMTP را که Transmitly برای WelcomeKit ما استفاده می‌کند، پیکربندی کنیم.

using Transmitly;

var builder = WebApplication.CreateBuilder(args);
var emailConfig = builder.Configuration.GetRequiredSection("EmailSettings").Get<EmailSettingsConfiguration>();

builder.Services.AddTransmitly(tly =>
{
    // Configure the MailKit Channel Provider Settings
    tly.AddMailKitSupport(mailkit =>
    {
        mailkit.Host = emailConfig.Host;
        mailkit.UseSsl = emailConfig.UseSsl;
        mailkit.Port = emailConfig.Port;
        mailkit.UserName = emailConfig.Username;
        mailkit.Password = emailConfig.Password;
    })
    // Pipelines allow you to define your communications
    // as a domain action. This allows your domain code to 
    // stay agnostic to the details of how you
    // may send out a transactional communication.
    .AddPipeline("WelcomeKit", pipeline =>
    {
        // AsIdentityAddress() is also a convenience method that helps us create an audience identity
        // Identity addresses can be anything: email, phone, or even a device/app ID for push notifications!
        pipeline.AddEmail("welcome@my.app".AsIdentityAddress("Welcome Committee"), email =>
        {
            // Transmitly is a bit different. Most channel content is configured by using 
            // templates. The immediate benefit out of the box is being able to configure
            // culture-based templates. 
            // For this example, we'll keep things simple and send a static message.
            // But as you may have guessed, Transmitly also has Template Engine plugins as well.
            email.Subject.AddStringTemplate("Thanks for creating an account!");
            email.HtmlBody.AddStringTemplate("Check out the Getting Started section to see all the cool things you can do!");
            email.TextBody.AddStringTemplate("Check out the Getting Started (https://my.app/getting-started) section to see all the cool things you can do!");
        });
    });
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از استقرار کد خود، ارسال یک ایمیل ساده می‌تواند مانند قبل آسان باشد.

اگر SMTP دیگر برای برنامه شما مناسب نیست، ارائه دهنده کانال دیگری را امتحان کنید.

افزودن پیامک یا پوش نوتیفیکیشن؟ ترجیحات ارتباطی؟ خطوط لوله خود را تغییر دهید تا بدون زحمت کانال های جدید اضافه کنید. مدیریت تنظیمات برگزیده ارتباط کاربر به همین سادگی است.

نتیجه گیری

همانطور که برنامه شما رشد می کند و تکامل می یابد، داشتن یک استراتژی ارتباطی انعطاف پذیر و مقیاس پذیر بسیار مهم است. Transmitly نه تنها فرآیند ارسال ارتباطات تراکنشی را ساده می کند، بلکه چارچوبی قوی برای مدیریت کانال ها و ارائه دهندگان کانال های مختلف فراهم می کند. این امر زمان صرف شده برای مدیریت منطق ارتباطی را کاهش می دهد و شما را قادر می سازد بر روی ساخت و بهبود برنامه اصلی خود تمرکز کنید.

اگر علاقه مند به یادگیری بیشتر هستید، مخزن Transmitly Github را بررسی کنید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا