Ejemplo n.º 1
0
 public static MailAddress TryGetMailAddress(string address, string name)
 {
     if (address.HasValue())
     {
         address = address.Trim();
     }
     if (name.HasValue())
     {
         name = name.Replace("\"", "");
     }
     if (ValidEmail(address))
     {
         return(Util.FirstAddress(address, name));
     }
     return(null);
 }
Ejemplo n.º 2
0
        public static void sendmsg(string SysFromEmail, string CmsHost, MailAddress From, string subject, string Message, List <MailAddress> to, int id, int?pid, List <LinkedResource> attachments = null)
        {
            var senderrorsto = ConfigurationManager.AppSettings["senderrorsto"];
            var msg          = new MailMessage();

            if (From == null)
            {
                From = Util.FirstAddress(senderrorsto);
            }

            msg.From = From;
            if (SysFromEmail.HasValue())
            {
                var sysmail = new MailAddress(SysFromEmail);
                if (From.Host != sysmail.Host)
                {
                    msg.Sender = sysmail;
                }
            }
            msg.Headers.Add("X-SMTPAPI",
                            "{{\"unique_args\":{{\"host\":\"{0}\",\"mailid\":\"{1}\",\"pid\":\"{2}\"}}}}"
                            .Fmt(CmsHost, id, pid));
            msg.Headers.Add("X-BVCMS", "host:{0}, mailid:{1}, pid:{2}".Fmt(CmsHost, id, pid));

            foreach (var ma in to)
            {
                if (ma.Host != "nowhere.name" || IsInRoleEmailTest)
                {
                    msg.AddAddr(ma);
                }
            }
            msg.Subject = subject;
            var addrs        = string.Join(", ", to.Select(tt => tt.ToString()));
            var BadEmailLink = "";

            if (msg.To.Count == 0)
            {
                msg.AddAddr(msg.From);
                msg.AddAddr(Util.FirstAddress(senderrorsto));
                msg.Subject += "-- bad addr for {0}({1})".Fmt(CmsHost, pid);
                BadEmailLink = "<p><a href='{0}Person/Index/{1}'>bad addr for</a></p>\n".Fmt(CmsHost, pid);
            }

            var regex     = new Regex("</?([^>]*)>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
            var text      = regex.Replace(Message, string.Empty);
            var htmlView1 = AlternateView.CreateAlternateViewFromString(text, Encoding.UTF8, MediaTypeNames.Text.Plain);

            htmlView1.TransferEncoding = TransferEncoding.Base64;
            msg.AlternateViews.Add(htmlView1);

            var html     = BadEmailLink + Message;
            var htmlView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, MediaTypeNames.Text.Html);

            htmlView.TransferEncoding = TransferEncoding.Base64;
            if (attachments != null)
            {
                foreach (var a in attachments)
                {
                    htmlView.LinkedResources.Add(a);
                }
            }
            msg.AlternateViews.Add(htmlView);

            try
            {
                var smtp = Util.Smtp();
                smtp.Send(msg);
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                htmlView.Dispose();
            }
        }