Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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()));
            }
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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);
                }
            }
        }
Esempio n. 7
0
        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.");
        }