سبد (0)

ارسال ایمیل در Workflow

ساخت یک اکتیویتی سفارشی برای ارسال ایمیل

 در این قسمت از آموزش Workflow، قصد داریم یک اکتیویتی سفارشی ایجاد کنیم، وظیفه این اکتیویتی ارسال یک Email به یک آدرس مشخص است.

مراحل انجام کار

 پروژه گردش کار WorkflowConsoleApp شامل مراحل زير است:

  1. اضافه کردن فایل MyActivity.cs
  2. ايجاد و طراحي Workflow
  3. اجراي Workflow
  4. پروژه ي گردش کار 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 مراحل زیر را طی نمایید:

  1. از پنل Toolbox، اکتيويتي Sequence را بداخل صفحه بکشيد و مطابق تصویر زیر، متغیر resultVar را از نوع String تعریف نمایید.
  2. یک اکتیویتی WriteLine اضافه کنید و خصوصیت Text آنرا با "Start Sending Email" تنظیم نمایید.
  3. از پنل Toolbox، اکتيويتي SendEmail را در زیر اکتیویتی WriteLine قرار دهید و مطابق زیر آنرا تنظیم نمایید.
  4. در آخر یک اکتیویتی WriteLine دیگر اضافه کنید و خصوصیت Text آنرا با "End" تنظیم کنید.


اجراي Workflow

پروژه WorkflowConsoleApp را بعنوان پروژه StartUp تنظيم نماييد و در ادامه براي اجراي Workflow، فایل Program.cs را بصورت زیر تغییر داده و دکمه هاي ميانبر Ctrl+F5 را فشار دهيد:

Program.cs

Activity workflow1 = new TestSendEmailWF();
WorkflowInvoker.Invoke(workflow1);

پروژه ي گردش کار WorkflowConsoleApp  چگونه عمل مي کند؟

ارسال ایمیل یک پروسه زمان بر است بنابراین بهتر است برای انجام این کار یک اکتیویتی غیرهمزمان (asynchronous) یا یک سرویس مستقل  ایجاد نماییم.

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