private static void _sendEmail(AsyncSendMailStatus status, MailTask mailTask) { try { var server = mailTask.BuildServer(); var mail = mailTask.BuildMail(); var smtp = new SmtpClient(); // Add event handlers to current SmtpClient instance. smtp.OnAuthorized += new SmtpClient.OnAuthorizedEventHandler(OnAuthorized); smtp.OnConnected += new SmtpClient.OnConnectedEventHandler(OnConnected); smtp.OnSecuring += new SmtpClient.OnSecuringEventHandler(OnSecuring); smtp.OnSendingDataStream += new SmtpClient.OnSendingDataStreamEventHandler(OnSendingDataStream); status.Status = "Connecting server ..."; smtp.Tag = status; smtp.SendMail(server, mail); status.Status = "Completed"; status.HasError = false; status.Progress = 100; } catch (Exception ep) { status.Status = ep.Message; status.HasError = true; status.Progress = 100; } status.Completed = true; }
private ActionResult _syncSendMail(MailTask mailTask) { var OauthWrapper = _initOauthWrapper(mailTask.OauthProvider); ViewBag.TokenIsExisted = !string.IsNullOrEmpty(OauthWrapper.Provider.AccessToken); try { mailTask.AuthType = SmtpAuthType.XOAUTH2; mailTask.User = OauthWrapper.Provider.UserEmail; mailTask.Password = OauthWrapper.Provider.AccessToken; mailTask.IsAuthenticationRequired = true; // always set From to authenticated user. mailTask.Sender = OauthWrapper.Provider.UserEmail; var smtp = new SmtpClient(); var server = mailTask.BuildServer(); var mail = mailTask.BuildMail(); smtp.SendMail(server, mail); ViewBag.IsSyncSendSucceeded = true; ViewBag.SyncSendStatus = "Message has been submitted to server successfully."; } catch (Exception ep) { ViewBag.IsSyncSendSucceeded = false; ViewBag.SyncSendStatus = ep.Message; } mailTask.TaskId = Guid.NewGuid().ToString(); return(_mailView(mailTask)); }
void _syncSendMail(MailTask mailTask) { try { var smtp = new SmtpClient(); var server = mailTask.BuildServer(); var mail = mailTask.BuildMail(); smtp.SendMail(server, mail); ViewBag.IsSyncSendSucceeded = true; ViewBag.SyncSendStatus = "Message has been submitted to server successfully."; } catch (Exception ep) { ViewBag.IsSyncSendSucceeded = false; ViewBag.SyncSendStatus = ep.Message; } }
bool _submitMessage(int recipientIndex, MailTask mailTask) { if (!_trafficController.PrepareIncreaseConnection()) { _trafficController.Rollback(); return(false); } if (!_trafficController.PrepareIncreaseMessage()) { _trafficController.Rollback(); return(false); } SendMailThreadState state = new SendMailThreadState(); state.Server = mailTask.BuildServer(); state.Mail = mailTask.BuildMail(); state.Mail.TextBody = state.Mail.TextBody.Replace("[$sender]", state.Mail.From.ToString()); state.Mail.TextBody = state.Mail.TextBody.Replace("[$rcpt]", state.Mail.To.ToString()); state.Mail.TextBody = state.Mail.TextBody.Replace("[$subject]", state.Mail.Subject.ToString()); // even you can add different attachment for different recipient here. state.RecipientIndex = recipientIndex; try { Interlocked.Increment(ref _threadCounter); ThreadPool.QueueUserWorkItem(this._sendThreadProc, state); _trafficController.Commit(); return(true); } catch { Interlocked.Decrement(ref _threadCounter); _trafficController.Rollback(); return(false); } }