public override void AddEmail(MailMessage email) { using (SqlConnection connection = new SqlConnection(this._connectionString)) { SqlCommand command = new SqlCommand("gopi_AddEmail", connection); command.CommandType = CommandType.StoredProcedure; SerializableMailMessage mailToSerialize = new SerializableMailMessage(); mailToSerialize.Email = email; XmlSerializer serializer = new XmlSerializer(typeof(SerializableMailMessage)); using (StringWriter writer = new StringWriter()) { serializer.Serialize(writer, mailToSerialize); command.Parameters.AddWithValue("EmailData", writer.GetStringBuilder().ToString()); } connection.Open(); command.ExecuteNonQuery(); connection.Close(); command.Dispose(); } }
public static MailMessage Convert(SerializableMailMessage n) { var retval = new MailMessage { Body = n.Body, From = new MailAddress(n.From), Subject = n.Subject, IsBodyHtml = n.IsBodyHtml }; foreach (var address in n.To) retval.To.Add(address); return retval; }
public static SerializableMailMessage Convert(MailMessage n) { var retval = new SerializableMailMessage { Body = n.Body, To = new List<string>(), From = n.From.Address, Subject = n.Subject, IsBodyHtml = n.IsBodyHtml }; foreach (var to in n.To) retval.To.Add(to.Address); return retval; }
private static string GetEmailForNote(TicketEventNotification note) { var email = new TicketEmail { Ticket = note.TicketEvent.Ticket, SiteRootUrl = RootUrl }; var mailService = new EmailService(); SerializableMailMessage message = mailService.CreateMailMessage(email); using (var ms = new MemoryStream()) { new BinaryFormatter().Serialize(ms, message); return(Convert.ToBase64String(ms.ToArray())); } }
public override MailCollection GetEmails(int emailsCount) { MailCollection emails = new MailCollection(); using (SqlConnection connection = new SqlConnection(this._connectionString)) { SqlCommand command = new SqlCommand("gopi_GetEmails", connection); command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("Count", emailsCount); connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { XmlSerializer serializer = new XmlSerializer(typeof(SerializableMailMessage)); while (reader.Read()) { SerializableMailMessage email = new SerializableMailMessage(); string stringData = (string)reader["EmailData"]; MemoryStream memoryStream = new MemoryStream(); byte[] data = Encoding.Unicode.GetBytes(stringData); Encoding.Convert(Encoding.Default, Encoding.UTF8, data); memoryStream.Write(data, 0, data.Length); memoryStream.Position = 0; email = (SerializableMailMessage)serializer.Deserialize(memoryStream); email.ID = new Guid(reader["ID"].ToString()); email.DateAdded = (DateTime)reader["DateAdded"]; emails.Add(email); } } connection.Close(); command.Dispose(); } return emails; }
public static async Task Main(string[] args) { var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .Build(); var connectionString = configuration["ConnectionString"]; var qName = configuration["MailQueueName"]; var smtpServer = configuration["smtpServer"]; if (connectionString == null || qName == null || smtpServer == null) { throw new Exception("Please define ConnectionString and qName environment variables"); } CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = queueClient.GetQueueReference(qName); await queue.CreateIfNotExistsAsync(); while (true) { CloudQueueMessage msg = await queue.GetMessageAsync(); if (msg != null) { MailMessage emailmsg = null; try { StringReader sr = new StringReader(msg.AsString); XmlReader xr = XmlReader.Create(sr); SerializableMailMessage sermsg = new SerializableMailMessage(); sermsg.ReadXml(xr); emailmsg = sermsg.Email; Console.WriteLine("TO: " + emailmsg.To[0].Address); Console.WriteLine("Subject: " + emailmsg.Subject); Console.WriteLine(emailmsg.Body); } catch { Console.WriteLine("Unable to desrialize email message: "); Console.WriteLine("----"); Console.WriteLine(msg.AsString); Console.WriteLine("----"); Console.WriteLine("Discarding email"); } if (emailmsg != null) { try { SmtpClient smtpClient = new SmtpClient(smtpServer); smtpClient.Send(emailmsg); } catch { Console.WriteLine("Unable to connect to smtp server"); throw; } } // Get the email off the queue await queue.DeleteMessageAsync(msg); } else { Thread.Sleep(5000); } } }
public static async Task Main(string[] args) { var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .Build(); var connectionString = configuration["ConnectionString"]; var qName = configuration["MailQueueName"]; if (connectionString == null || qName == null) { throw new Exception("Please define ConnectionString and qName environment variables"); } CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = queueClient.GetQueueReference(qName); await queue.CreateIfNotExistsAsync(); Console.WriteLine("FROM:"); string toAddress = Console.ReadLine(); Console.WriteLine("TO:"); string fromAddress = Console.ReadLine(); Console.WriteLine("Subject:"); string subject = Console.ReadLine(); MailMessage msg = new MailMessage(); msg.To.Add(new MailAddress(toAddress)); msg.From = new MailAddress(fromAddress); msg.Subject = subject; Console.WriteLine("Message body (CTRL+Z to finish):"); string line; List <string> msgBody = new List <string>(); do { line = Console.ReadLine(); if (line != null) { msgBody.Add(line); } } while (line != null); msg.Body = string.Join(Environment.NewLine, msgBody); SerializableMailMessage sermsg = new SerializableMailMessage(); sermsg.Email = msg; XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.NewLineOnAttributes = true; var sw = new StringWriter(); var xw = XmlWriter.Create(sw); sermsg.WriteXml(xw); xw.Flush(); var xmlEmail = sw.ToString(); await queue.AddMessageAsync(new CloudQueueMessage(xmlEmail)); Console.WriteLine("Email queued for delivery."); }