ارسال ایمیل در Workflow
ساخت یک اکتیویتی سفارشی برای ارسال ایمیل
در این قسمت از آموزش Workflow، قصد داریم یک اکتیویتی سفارشی ایجاد کنیم، وظیفه این اکتیویتی ارسال یک Email به یک آدرس مشخص است.
مراحل انجام کار
پروژه گردش کار WorkflowConsoleApp شامل مراحل زير است:
- اضافه کردن فایل MyActivity.cs
- ايجاد و طراحي Workflow
- اجراي Workflow
- پروژه ي گردش کار UsingExistsInCollectionActivity چگونه عمل مي کند؟
اضافه کردن فایل FileWriter.cs
در پروژه ActivityLibrary، یک فایل جدید با نام SendEmail.cs ایجاد نمایید و کدهای زیر را در آن قرار دهید:
FileWriter.csle
using System.Activities; public sealed class SendEmailActivity : CodeActivity { public InArgument from { get; set; } public InArgument host { get; set; } public InArgument userName { get; set; } public InArgument password { get; set; } public InArgument to { get; set; } public InArgument subject { get; set; } public InArgument body { get; set; } public OutArgument result { get; set; } protected override void Execute(CodeActivityContext context) { var mailMessage = new System.Net.Mail.MailMessage(); mailMessage.To.Add(to.Get(context).ToString()); mailMessage.Subject = subject.Get(context).ToString(); mailMessage.Body = body.Get(context); mailMessage.From = new System.Net.Mail.MailAddress(from.Get(context)); var smtp = new System.Net.Mail.SmtpClient(); smtp.Host = host.Get(context); smtp.Credentials = new System.Net.NetworkCredential( userName.Get(context), password.Get(context)); smtp.EnableSsl = true; smtp.Send(mailMessage); result.Set(context, "Sent Email Successfully!"); } }
حالا پروژه را Build کنید تا اکتیویتی سفارشی ما یعنی SendEmail در پنل Toolbox ظاهر شود.
ايجاد و طراحي Workflow
در پروژه WorkflowConsoleApp یک Workflow جدید با نام TestSendEmailWF.xaml اضافه نمایید و برای طراحی Workflow مراحل زیر را طی نمایید:
- از پنل Toolbox، اکتيويتي Sequence را بداخل صفحه بکشيد و مطابق تصویر زیر، متغیر resultVar را از نوع String تعریف نمایید.
- یک اکتیویتی WriteLine اضافه کنید و خصوصیت Text آنرا با "Start Sending Email" تنظیم نمایید.
- از پنل Toolbox، اکتيويتي SendEmail را در زیر اکتیویتی WriteLine قرار دهید و مطابق زیر آنرا تنظیم نمایید.
- در آخر یک اکتیویتی WriteLine دیگر اضافه کنید و خصوصیت Text آنرا با "End" تنظیم کنید.
اجراي Workflow
پروژه WorkflowConsoleApp را بعنوان پروژه StartUp تنظيم نماييد و در ادامه براي اجراي Workflow، فایل Program.cs را بصورت زیر تغییر داده و دکمه هاي ميانبر Ctrl+F5 را فشار دهيد:
Program.cs
Activity workflow1 = new TestSendEmailWF(); WorkflowInvoker.Invoke(workflow1);
پروژه ي گردش کار WorkflowConsoleApp چگونه عمل مي کند؟
ارسال ایمیل یک پروسه زمان بر است بنابراین بهتر است برای انجام این کار یک اکتیویتی غیرهمزمان (asynchronous) یا یک سرویس مستقل ایجاد نماییم.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 6835