コード例 #1
0
        private void SaveToDB(qCom_TempBulkEmailLog t_log, int email_item_id, string email)
        {
            int curr_log_id = 0;
            int i           = 0;

            if ((email == null) || (email.Trim().Length == 0))
            {
                return;
            }

            var logs = qCom_EmailLog.GetEmailLogsByEmailItemIDANDEmail(email_item_id, email);

            if (logs != null)
            {
                foreach (var l in logs)
                {
                    if (i == 0)
                    {
                        curr_log_id = l.EmailLogID;
                    }
                    i++;
                }
            }
            else
            {
                // log doesn't exist so create one
                qCom_EmailItem email_sent = new qCom_EmailItem(email_item_id);
                qCom_EmailLog  log        = new qCom_EmailLog();
                log.ScopeID      = 1;
                log.EmailItemID  = email_item_id;
                log.UserID       = 0;
                log.EmailAddress = email;
                log.Subject      = email_sent.Subject;
                log.Timestamp    = t_log.Timestamp;
                log.Insert();

                curr_log_id = log.EmailLogID;
            }

            if (curr_log_id > 0)
            {
                qCom_EmailLog e_log = new qCom_EmailLog(curr_log_id);
                if (e_log.EmailLogID > 0)
                {
                    e_log.ReadTime = DateTime.Now;
                    e_log.Update();
                }
            }
        }
コード例 #2
0
        //Send to just one address with text replacement
        public int SendDatabaseMail(string address, int emailID, int userID, string userName, string value1, string value2, string value3, string value4, bool no_duplicates_today)
        {
            // get email info
            qCom_EmailTool email      = new qCom_EmailTool(emailID);
            qCom_EmailItem full_email = new qCom_EmailItem(emailID);

            string header              = string.Empty;
            string footer              = string.Empty;
            string strFromEmail        = string.Empty;
            string fromName            = string.Empty;
            string emailUsername       = null;
            string emailPassword       = null;
            string emailServer         = null;
            bool   sslEnabled          = false;
            int    portNum             = 0;
            string strDID              = string.Empty;
            int    return_email_log_id = 0;
            bool   passed_send_checks  = false;
            bool   already_sent_today  = true;
            string returnedEmail       = string.Empty;
            bool   ok_to_send          = false;
            string noEmail             = string.Empty;


            // Check to see if email already sent to user today
            if (no_duplicates_today == true)
            {
                var prior_current_day_log = qCom_EmailLog.CheckForEmailSentLastDay(address);

                if (prior_current_day_log == null)
                {
                    already_sent_today = false;
                }
            }
            else
            {
                already_sent_today = false;
            }

            qCom_UserPreference_View u_pref = new qCom_UserPreference_View(address);

            if (u_pref.UserID > 0)
            {
                if (u_pref.OkBulkEmail == "Yes" || u_pref.OkEmail == "Yes")
                {
                    ok_to_send = true;
                }
            }
            else
            {
                ok_to_send = true;
            }

            if (already_sent_today == false && ok_to_send == true)
            {
                passed_send_checks = true;
            }
            else
            {
                passed_send_checks = false;
            }

            qPtl_User user = new qPtl_User(Convert.ToInt32(userID));

            if (user.UserID == 0)
            {
                user.Email     = "";
                user.FirstName = "";
                user.LastName  = "";
            }

            // load default email preferences
            if (String.IsNullOrEmpty(emailServer))
            {
                var email_pref = qCom_EmailPreference.GetEmailPreferences();

                if (email_pref != null)
                {
                    if (email_pref.EmailPreferencesID > 0)
                    {
                        header        = email_pref.Header;
                        footer        = email_pref.Footer;
                        strFromEmail  = email_pref.FromEmailAddress;
                        fromName      = email_pref.FromName;
                        emailServer   = email_pref.SMTPServer;
                        emailUsername = email_pref.SMTPUsername;
                        emailPassword = email_pref.SMTPPassword;
                        sslEnabled    = email_pref.SMTPSSL;
                        portNum       = email_pref.SMTPPort;
                    }
                }
            }

            // format as friendly send address
            string strFullEmail = string.Empty;

            if (!String.IsNullOrEmpty(fromName))
            {
                strFullEmail = fromName + " <" + strFromEmail + ">";
            }
            else
            {
                strFullEmail = strFromEmail;
            }

            string messageBody = header;

            messageBody += email.emailDraft;
            emailSubject = email.emailSubject;

            messageBody += footer;

            if (!String.IsNullOrEmpty(emailServer) && passed_send_checks == true)
            {
                SmtpClient emailClient = new SmtpClient(emailServer, portNum);
                emailClient.EnableSsl      = sslEnabled;
                emailClient.DeliveryMethod = SmtpDeliveryMethod.Network;

                emailClient.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

                Regex emailCheck = new Regex("^.*<?[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+(\\.[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+)*@(([a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9]+)?){1,63}\\.)+([a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9]+)?){2,63}>?$");

                // create temp bulk email log -- used for tracking (must be created before sent so can include id in message html)
                int t_log_id = 0;
                qCom_TempBulkEmailLog t_log = new qCom_TempBulkEmailLog();
                t_log.EmailItemID  = emailID;
                t_log.EmailAddress = strFullEmail;
                t_log.Timestamp    = DateTime.Now;
                t_log.Insert();
                t_log_id = t_log.TempBulkEmailLogID;

                if (emailCheck.IsMatch(address.ToLower()))
                {
                    string finalBody = parseContentField(new string[] { Convert.ToString(user.UserID), userName, user.FirstName, user.LastName, user.Email, DateTime.Now.ToString(), value1, value2, value3, value4, strDID, Convert.ToString(emailID), Convert.ToString(t_log_id) }, messageBody);

                    string finalSubject = parseContentField(new string[] { Convert.ToString(user.UserID), userName, user.FirstName, user.LastName, user.Email, DateTime.Now.ToString(), value1, value2, value3, value4, strDID, Convert.ToString(emailID), Convert.ToString(t_log_id) }, emailSubject);

                    MailMessage mailout = new MailMessage(strFullEmail, address, finalSubject, finalBody);
                    mailout.IsBodyHtml = true;

                    emailClient.Send(mailout);

                    return_email_log_id = AddTransmissionLog(scopeID, address, userID, "single", finalSubject, emailID, full_email.CampaignID, strFromEmail);
                }
            }

            return(return_email_log_id);
        }