Thursday, August 06, 2009

SMTP SendMailActivity for Windows Workflow


using System;

using System.ComponentModel;

using System.Net;

using System.Net.Mail;

using System.Workflow.ComponentModel;

namespace SendMailActivity

{

public partial class SendMailActivity: Activity

{

public SendMailActivity()

{

InitializeComponent();

}

#region Public workflow members

public static DependencyProperty FromProperty = DependencyProperty.Register("From", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("The email address of the sender")]

[CategoryAttribute("Parameters")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string From

{

get

{

return ((string)(base.GetValue(SendMailActivity.FromProperty)));

}

set

{

base.SetValue(SendMailActivity.FromProperty, value);

}

}

public static DependencyProperty ToProperty = DependencyProperty.Register("To", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("The email address of the receiver")]

[CategoryAttribute("Parameters")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string To

{

get

{

return ((string)(base.GetValue(SendMailActivity.ToProperty)));

}

set

{

base.SetValue(SendMailActivity.ToProperty, value);

}

}

public static DependencyProperty SubjectProperty = DependencyProperty.Register("Subject", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("Subject")]

[CategoryAttribute("Parameters")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string Subject

{

get

{

return ((string)(base.GetValue(SendMailActivity.SubjectProperty)));

}

set

{

base.SetValue(SendMailActivity.SubjectProperty, value);

}

}

public static DependencyProperty BodyProperty = DependencyProperty.Register("Body", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("Body")]

[CategoryAttribute("Parameters")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string Body

{

get

{

return ((string)(base.GetValue(SendMailActivity.BodyProperty)));

}

set

{

base.SetValue(SendMailActivity.BodyProperty, value);

}

}

public static DependencyProperty HostProperty = DependencyProperty.Register("Host", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("Host")]

[CategoryAttribute("Parameters")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string Host

{

get

{

return ((string)(base.GetValue(SendMailActivity.HostProperty)));

}

set

{

base.SetValue(SendMailActivity.HostProperty, value);

}

}

public static DependencyProperty LoginProperty = DependencyProperty.Register("Login", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("Login")]

[CategoryAttribute("Login Category")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string Login

{

get

{

return ((string)(base.GetValue(SendMailActivity.LoginProperty)));

}

set

{

base.SetValue(SendMailActivity.LoginProperty, value);

}

}

public static DependencyProperty PasswordProperty = DependencyProperty.Register("Password", typeof(string), typeof(SendMailActivity));

[DescriptionAttribute("Password")]

[CategoryAttribute("Password Category")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public string Password

{

get

{

return ((string)(base.GetValue(SendMailActivity.PasswordProperty)));

}

set

{

base.SetValue(SendMailActivity.PasswordProperty, value);

}

}

public static DependencyProperty PortProperty = DependencyProperty.Register("Port", typeof(int), typeof(SendMailActivity));

[DescriptionAttribute("Port")]

[CategoryAttribute("Port Category")]

[BrowsableAttribute(true)]

[DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]

public int Port

{

get

{

return ((int)(base.GetValue(SendMailActivity.PortProperty)));

}

set

{

base.SetValue(SendMailActivity.PortProperty, value);

}

}

#endregion

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

{

try

{

MailAddress toAddress = new MailAddress(To);

MailAddress fromAddress = new MailAddress(From);

MailAddressCollection addresses = new MailAddressCollection();

addresses.Add(toAddress);

MailMessage msg = new MailMessage(fromAddress, toAddress);

msg.Subject = Subject;

msg.Body = Body;

SmtpClient mail = new SmtpClient(Host);

mail.Port = Port; //587;

mail.Credentials = new NetworkCredential(Login, Password);

mail.EnableSsl = true;

mail.Send(msg);

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

}

return ActivityExecutionStatus.Closed;

}

}

}



// Gmail settings

// SMTP server: smtp.gmail.com

// Port: 587



No comments: