trumpman
asked on
Sending Emails Asynchronously
Hello,
I am trying to implement some sample code provided at http://www.eggheadcafe.com/articles/20030720.asp . However, I cannot get the actually threading to execute.
If I simply call it synchronously, the code works fine.
Please advise.
Trumpman
I am trying to implement some sample code provided at http://www.eggheadcafe.com/articles/20030720.asp . However, I cannot get the actually threading to execute.
If I simply call it synchronously, the code works fine.
Please advise.
Trumpman
namespace addmik.massmail.send
{
public class sendEmail
{
private string htmlFilePath;
public string HtmlFilePath
{
get
{
return htmlFilePath;
}
set
{
htmlFilePath = value;
}
}
private string subject;
public string Subject
{
get
{
return subject;
}
set
{
subject = value;
}
}
private string smtpServer;
public string SmtpServer
{
get
{
return smtpServer;
}
set
{
smtpServer = value;
}
}
private string fromEmail;
public string FromEmail
{
get
{
return fromEmail;
}
set
{
fromEmail = value;
}
}
private string emailBody;
public string EmailBody
{
get
{
return emailBody;
}
set
{
emailBody = value;
}
}
public string strBody = String.Empty;
public string SendEmail(string name, string emailAddress)
{
/*
if (strBody == String.Empty)
{
try
{
using (StreamReader reader = new StreamReader(this.HtmlFilePath))
{
strBody = reader.ReadToEnd();
}
}
catch (Exception ex)
{
throw new Exception("error reading HTML File" + ex.Message);
}
}*/
try
{
MailMessage Message = new MailMessage();
Message.BodyFormat = MailFormat.Html;
Message.To = emailAddress;
Message.From = this.FromEmail;
Message.Subject = this.Subject;
Message.Body = this.EmailBody;
SmtpMail.SmtpServer = this.SmtpServer;
SmtpMail.Send(Message);
}
catch (System.Web.HttpException ehttp)
{
throw new Exception("Send error" + ehttp.Message);
}
return "sent" + name;
}
public delegate string SendEmailDelegate(string name, string emailAddress);
public void GetResultsOnCallback(IAsyncResult ar)
{
SendEmailDelegate del = (SendEmailDelegate)
((AsyncResult)ar).AsyncDelegate;
try
{
string result;
result = del.EndInvoke(ar);
Debug.WriteLine("\nOn CallBack: result is " + result);
}
catch (Exception ex)
{
Debug.WriteLine("\nOn CallBack, problem occurred: " + ex.Message);
}
}
public string SendEmailAsync(string name, string emailAddress)
{
//this function executes
this.SendEmail(name, emailAddress);
// the following lines do not execute
SendEmailDelegate dc = new SendEmailDelegate(this.SendEmail);
AsyncCallback cb = new AsyncCallback(this.GetResultsOnCallback);
IAsyncResult ar = dc.BeginInvoke(name, emailAddress, cb, null);
return "ok";
}
} // end class sendEmail
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
- trumpman