示例#1
0
        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();
            }
        }
示例#2
0
        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";
            }
        }
示例#3
0
        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();
        }