示例#1
0
        public static void LogEmail(Email email, bool delivered, string errorMessage)
        {
            SimpleAES aes = new SimpleAES();
            string connectionString = "Server=localhost;Database=EmailProcessor;User ID=EmailProcessor;Password=6mVZsDYj4xeaynW2;Pooling=false";
            using(IDbConnection dbcon = new MySqlConnection(connectionString))
            {
                dbcon.Open();

                using(IDbCommand dbcmd = dbcon.CreateCommand())
                {
                    string pattern = @"INSERT INTO Log (email_id, from_address, to_address, cc_address, bcc_address, header, body, delivered, error_message)
                                       VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', {7}, '{8}') ;";
                    string sql = String.Format(
                         pattern,
                         email.Id,
                         email.From,
                         EmailUtilities.ConvertStringArrayToString(email.To),
                         EmailUtilities.ConvertStringArrayToString(email.Cc),
                         EmailUtilities.ConvertStringArrayToString(email.Bcc),
                         aes.EncryptToString(email.Header),
                         aes.EncryptToString(email.Body),
                         delivered,
                         errorMessage
                    );

                    dbcmd.CommandText = sql;
                    dbcmd.ExecuteNonQuery();
                }

                // Using entityframework had issue with mono machine.config
                /*
                using (var ctx = new LogContext())
                {
                    ctx.Log.Add(new Log() {
                        EmailId = email.Id,
                        FromAddress = email.From,
                        ToAddress = ConvertStringArrayToString(email.To),
                        CcAddress = ConvertStringArrayToString(email.Cc),
                        BccAddress = ConvertStringArrayToString(email.Bcc),
                        Header =  aes.EncryptToString(email.Header),
                        Body = aes.EncryptToString(email.Body),
                        Delivered = delivered,
                        ErrorMessage = errorMessage
                    });
                    ctx.SaveChanges();
                }
                */
            }
        }
        public static string ValidateEmail(Email email)
        {
            string isValid = "";

            // From required & valid
            if(string.IsNullOrEmpty(email.From) || !IsValidEmailAddress(email.From))
            {
                isValid += "From is invalid or missing ";
            }

            // To required & valid
            if(email.To.Length != 0)
            {
                foreach(string toEmail in email.To)
                {
                    if(!IsValidEmailAddress(toEmail))
                    {
                        isValid += string.Format("{0} is an invalid To address ", toEmail);
                    }
                }
            }
            else
            {
                isValid += "To address is required ";
            }

            // Cc valid but not required
            if(email.Cc.Length != 0)
            {
                foreach(string ccEmail in email.Cc)
                {
                    if(!IsValidEmailAddress(ccEmail))
                    {
                        isValid += string.Format("{0} is an invalid CC address ", ccEmail);
                    }
                }
            }

            // Bcc valid but not required
            if(email.Bcc.Length != 0)
            {
                foreach(string bccEmail in email.Bcc)
                {
                    if(!IsValidEmailAddress(bccEmail))
                    {
                        isValid += string.Format("{0} is an invalid BCC address ", bccEmail);
                    }
                }
            }

            // Body required
            if(string.IsNullOrEmpty(email.Body))
            {
                isValid += "Email body is required";
            }

            // Success email is valid
            if(isValid == "")
            {
                isValid = "valid";
            }

            return isValid;
        }
 public static bool SendEmail(Email email)
 {
     var rand = new Random();
     return rand.NextDouble() > 0.2;
 }