public static void SendEmail(string[] recipients, string subject, string body, bool async = true, bool isHtml = false) { if (recipients == null || recipients.Length == 0) { return; } AsyncSendMail mailer = new AsyncSendMail( Settings.MailServer, !string.IsNullOrEmpty(Settings.MailServerLogin), Settings.MailServerLogin, Settings.MailServerPassword, Settings.MailServerPort, Settings.MailUseSSL, recipients, Settings.MailFromAddress, null, subject, body, null, isHtml); if (async && !Settings.EmailDebug) { mailer.SendAsynchronously(); } else { mailer.SendSynchronously(); } }
protected void btnTestEmail_Click(object sender, EventArgs e) { divTestEmail.Visible = true; divTestEmail.InnerHtml = "Sending test email...<br>"; try { //mailsender.SendSynchronously(); AsyncSendMail mailer = new AsyncSendMail( Settings.MailServer, !string.IsNullOrEmpty(Settings.MailServerLogin), Settings.MailServerLogin, Settings.MailServerPassword, Settings.MailServerPort, Settings.MailUseSSL, new string[] { "*****@*****.**" }, Settings.MailFromAddress, null, "test", "test", null, false); mailer.SendSynchronously(); divTestEmail.InnerHtml += "Email sent successfully!"; divTestEmail.Style["color"] = "Green"; } catch (Exception ex) { divTestEmail.InnerHtml += "<b>ERROR sending email</b>:<br><br>"; divTestEmail.InnerHtml += ex.ToString(); divTestEmail.Style["color"] = "Red"; } }
public static void SendEmailToUserGroup(int groupId, string subject, string body, bool sendPm = false) { List <string> mailRecipients = new List <string>(); List <int> pmRecipients = new List <int>(); using (var cn = DB.CreateOpenConnection()) { //addin subscribers to the recipients list var usersInGroup = User.GetUserIdsInGroup(groupId); DbDataReader dr = cn.ExecuteReader( @"SELECT UserID, Email FROM ForumUsers WHERE UserID IN (" + usersInGroup.Select(x => x.ToString()).Aggregate((x, y) => x + "," + y) + ") AND Disabled=0"); while (dr.Read()) { if (sendPm) { pmRecipients.Add(Convert.ToInt32(dr["UserID"])); } else { if (AsyncSendMail.MailAddressTryParse(dr["Email"].ToString())) { mailRecipients.Add(dr["Email"].ToString()); } } } dr.Close(); } if (sendPm) { foreach (var userId in pmRecipients) { User.SendPM(userId, subject + "\n\n" + body); } } else { AsyncSendMail mailer = new AsyncSendMail( Settings.MailServer, !string.IsNullOrEmpty(Settings.MailServerLogin), Settings.MailServerLogin, Settings.MailServerPassword, Settings.MailServerPort, Settings.MailUseSSL, mailRecipients.ToArray(), Settings.MailFromAddress, null, subject, body, null, false); mailer.SendSynchronously(); } }
//the method sends a "welcome" email after the user hss been activated by admin public static void SendWelcomeEmail(string to, string url) { InitSettings(); string body = Resources.various.WelcomeEmailBody + "\r\n\r\n" + url; string subject = _forum + " - " + Resources.various.WelcomeEmailSubject; string[] recipients = new string[1]; recipients[0] = to; AsyncSendMail mailer = new AsyncSendMail( recipients, subject, body); mailer.AsyncSend(); }
//the method sends notifications of new personal messages public static void SendPersonalNotificationEmails(string toUserID, string url) { InitSettings(); string body = Resources.various.NewPersonalEmailBody + "\r\n" + url; string subject = _forum + " - " + Resources.various.NewPersonalSubject; DbConnection cn = Utils.DB.CreateConnection(); DbCommand cmd = Utils.DB.CreateDBProviderFactory().CreateCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT ForumUsers.Email FROM ForumUsers WHERE UserID='" + toUserID + "'"; cn.Open(); DbDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { string[] recipients = new string[1]; recipients[0] = dr["Email"].ToString(); AsyncSendMail mailer = new AsyncSendMail( recipients, subject, body); mailer.AsyncSend(); } dr.Close(); cn.Close(); }
//the method sends notifications of new user registrations to administrators public static void SendNewUserRegAdminNotification(string url) { InitSettings(); string body = "New user has registered on the forum.\r\n\r\nLink to the user's profile: " + url; string subject = _forum + " - new user registration"; DbConnection cn = Utils.DB.CreateConnection(); DbCommand cmd = Utils.DB.CreateDBProviderFactory().CreateCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT ForumUsers.Email FROM ForumUsers INNER JOIN ForumAdministrators ON ForumUsers.UserID=ForumAdministrators.UserID"; cn.Open(); DbDataReader dr = cmd.ExecuteReader(); ArrayList recipients = new ArrayList(); while (dr.Read()) { recipients.Add(dr["Email"].ToString()); } if (recipients.Count > 0) { AsyncSendMail mailer = new AsyncSendMail( (string[])(recipients.ToArray(typeof(string))), subject, body); mailer.AsyncSend(); } dr.Close(); cn.Close(); }
//the method sends notifications of new forum TOPICS public static void SendNewTopicNotificationEmails(int forumID, string userID, string url) { InitSettings(); DbConnection cn = Utils.DB.CreateConnection(); DbCommand cmd = Utils.DB.CreateDBProviderFactory().CreateCommand(); cmd.Connection = cn; cn.Open(); //addin subscribers to the recipients list cmd.CommandText = "SELECT ForumUsers.Email FROM ForumNewTopicSubscriptions INNER JOIN ForumUsers ON ForumNewTopicSubscriptions.UserID = ForumUsers.UserID WHERE ForumUsers.UserID<>'" + userID + "' AND ForumNewTopicSubscriptions.ForumID=" + forumID; DbDataReader dr = cmd.ExecuteReader(); ArrayList recipients = new ArrayList(); while (dr.Read()) { recipients.Add(dr["Email"].ToString()); } dr.Close(); //addin moderators to the recipients list cmd.CommandText = "SELECT ForumUsers.Email FROM ForumModerators INNER JOIN ForumUsers ON ForumModerators.UserID = ForumUsers.UserID WHERE ForumUsers.UserID<>'" + userID + "' AND ForumModerators.ForumID=" + forumID; dr = cmd.ExecuteReader(); while (dr.Read()) { recipients.Add(dr["Email"].ToString()); } dr.Close(); cmd.CommandText = "SELECT Title FROM Forums WHERE ForumID=" + forumID; object res = cmd.ExecuteScalar(); cn.Close(); string forumurl = url + Utils.GetForumURL(forumID, res.ToString()); string body = Resources.various.NewThreadEmailBody + "\r\n" + forumurl; string subject = _forum + " - " + Resources.various.NewThreadEmailSubject; AsyncSendMail mailer = new AsyncSendMail( (string[])recipients.ToArray(typeof(string)), subject, body); mailer.AsyncSend(); }
//the method sends notifications of new forum MESSAGES public static void SendNewMsgNotificationEmails(int topicID, string userID, string url) { InitSettings(); DbConnection cn = Utils.DB.CreateConnection(); DbCommand cmd = Utils.DB.CreateDBProviderFactory().CreateCommand(); cmd.Connection = cn; cn.Open(); //getting topic info int forumID; string subj; cmd.CommandText = "SELECT ForumID, Subject FROM ForumTopics WHERE TopicID=" + topicID; DbDataReader dr = cmd.ExecuteReader(); dr.Read(); forumID = Convert.ToInt32(dr["ForumID"]); subj = dr["Subject"].ToString(); dr.Close(); //addin subscribers to the recipients list cmd.CommandText = "SELECT ForumUsers.Email FROM ForumSubscriptions INNER JOIN ForumUsers ON ForumSubscriptions.UserID = ForumUsers.UserID WHERE ForumUsers.UserID<>'" + userID + "' AND ForumSubscriptions.TopicID=" + topicID; dr = cmd.ExecuteReader(); ArrayList recipients = new ArrayList(); while (dr.Read()) { recipients.Add(dr["Email"].ToString()); } dr.Close(); //addin moderators to the recipients list cmd.CommandText = "SELECT ForumUsers.Email FROM ForumModerators INNER JOIN ForumUsers ON ForumModerators.UserID = ForumUsers.UserID WHERE ForumUsers.UserID<>'" + userID + "' AND ForumModerators.ForumID=" + forumID; dr = cmd.ExecuteReader(); while (dr.Read()) { recipients.Add(dr["Email"].ToString()); } dr.Close(); cn.Close(); string topicurl = url + Utils.GetTopicURL(topicID, subj); //adding "?lastpage=1" to the url if (topicurl.IndexOf("?") > -1) topicurl += "&lastpage=1"; else topicurl += "?lastpage=1"; string body = Resources.various.ThreadUpdatedEmailBody + "\r\n" + topicurl; string subject = _forum + " - " + Resources.various.ThreadUpdatedEmailSubject; AsyncSendMail mailer = new AsyncSendMail( (string[])recipients.ToArray(typeof(string)), subject, body); mailer.AsyncSend(); }