public static MessageAddresses ParseAddresses(ISequence <String> addresses) { MessageAddresses lAddresses = new MessageAddresses(); foreach (String address in addresses) { lAddresses.Add(MessageAddress.ParseAddress(address)); } return(lAddresses); }
private static void EnlistMailAddresses(IList <String> destination, MessageAddresses addresses) { for (Int32 i = 0; i < addresses.Count; i++) { String lAddress = addresses[i].Address; if (String.IsNullOrEmpty(lAddress) || destination.Contains(lAddress)) { continue; } destination.Add(lAddress); } }
/// <summary> /// MessageSink DoSendMsg implementation /// </summary> /// <param name="msg">Message</param> protected override bool DoSendMsg(Message msg) { if (msg == null || !msg.AddressToBuilder.All.Any()) { return(false); } var sent = false; try { var addresses = new MessageAddresses(); var addressFrom = msg.AddressFromBuilder.GetFirstOrDefaultMatchForChannels(SupportedChannelNames); addresses.From = addressFrom.Assigned ? fmtEmail(addressFrom.Name, addressFrom.ChannelAddress) : fmtEmail(DefaultFromName, DefaultFromAddress); var addressTo = msg.AddressToBuilder.GetMatchesForChannels(SupportedChannelNames).ToList(); addresses.To = string.Join(", ", addressTo.Select(a => fmtEmail(a.Name, a.ChannelAddress)).ToArray()); var addressCC = msg.AddressCCBuilder.GetMatchesForChannels(SupportedChannelNames); addresses.CC = string.Join(", ", addressCC.Select(a => fmtEmail(a.Name, a.ChannelAddress)).ToArray()); var addressBCC = msg.AddressBCCBuilder.GetMatchesForChannels(SupportedChannelNames); addresses.BCC = string.Join(", ", addressBCC.Select(a => fmtEmail(a.Name, a.ChannelAddress)).ToArray()); var addressReplyTo = msg.AddressReplyToBuilder.GetMatchesForChannels(SupportedChannelNames); addresses.ReplyTo = string.Join(", ", addressReplyTo.Select(a => fmtEmail(a.Name, a.ChannelAddress)).ToArray()); //20170921 opan, dkh: fix too long content for Uri encoding - switch to multipart //if (msg.Attachments == null) // doSendWithoutAttachments(msg, addresses); //else doSendMultipart(msg, addresses); sent = true; } catch (Exception error) { var et = error.ToMessageWithType(); Log(MessageType.Error, "{0}.DoSendMsg(msg): {1}".Args(this.GetType().FullName, et), et); } return(sent); }
private static void EnlistMailAddresses(IList<String> destination, MessageAddresses addresses) { for (Int32 i = 0; i < addresses.Count; i++) { String lAddress = addresses[i].Address; if (String.IsNullOrEmpty(lAddress) || destination.Contains(lAddress)) continue; destination.Add(lAddress); } }
private void SetAddresses(MessageAddresses address, String names) { String[] lAddresses = names.Split(';'); for (Int32 i = 0; i < lAddresses.Length; i++) address.Add(lAddresses[i].Trim()); }
//private void doSendWithoutAttachments(Message msg, MessageAddresses addresses) //{ // var request = new WebClient.RequestParams(this) // { // Method = HTTPRequestMethod.POST, // BodyParameters = new Dictionary<string, string>() // }; // var auth = new HttpBasicAuthenticationHelper(API_USER_NAME, AuthorizationKey); // auth.AddAuthHeader(ref request); // addParameter(request.BodyParameters, MAIL_PARAM_FROM, addresses.From); // addParameter(request.BodyParameters, MAIL_PARAM_TO, addresses.To); // if (addresses.CC.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_CC, addresses.CC); // if (addresses.BCC.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_BCC, addresses.BCC); // if (addresses.ReplyTo.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_REPLY_TO, addresses.ReplyTo); // if (msg.Subject.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_SUBJECT, msg.Subject); // if (msg.Body.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_TEXT, msg.Body); // if (msg.RichBody.IsNotNullOrWhiteSpace()) // addParameter(request.BodyParameters, MAIL_PARAM_HTML, msg.RichBody); // if (TestMode) // request.BodyParameters.Add(API_PARAM_TESTMODE, "yes"); // WebClient.GetString(ServiceUrl, request); //} private void doSendMultipart(Message msg, MessageAddresses addresses) { Multipart.Part part; var parts = new List <Multipart.Part>(); part = new Multipart.Part(MAIL_PARAM_FROM) { ContentType = ContentType.TEXT, Content = addresses.From }; parts.Add(part); part = new Multipart.Part(MAIL_PARAM_TO) { ContentType = ContentType.TEXT, Content = addresses.To }; parts.Add(part); if (addresses.CC.IsNotNullOrWhiteSpace()) { part = new Multipart.Part(MAIL_PARAM_CC) { ContentType = ContentType.TEXT, Content = addresses.CC }; parts.Add(part); } if (addresses.BCC.IsNotNullOrWhiteSpace()) { part = new Multipart.Part(MAIL_PARAM_BCC) { ContentType = ContentType.TEXT, Content = addresses.BCC }; parts.Add(part); } if (addresses.ReplyTo.IsNotNullOrWhiteSpace()) { part = new Multipart.Part(MAIL_PARAM_REPLY_TO) { ContentType = ContentType.TEXT, Content = addresses.ReplyTo }; parts.Add(part); } part = new Multipart.Part(MAIL_PARAM_SUBJECT) { ContentType = ContentType.TEXT, Content = msg.Subject }; parts.Add(part); part = new Multipart.Part(MAIL_PARAM_TEXT) { ContentType = ContentType.TEXT, Content = msg.Body }; parts.Add(part); part = new Multipart.Part(MAIL_PARAM_HTML) { ContentType = ContentType.HTML, Content = msg.RichBody }; parts.Add(part); if (TestMode) { part = new Multipart.Part(API_PARAM_TESTMODE) { ContentType = ContentType.TEXT, Content = "yes" }; parts.Add(part); } if (msg.Attachments != null) { foreach (var attachment in msg.Attachments.Where(a => a.Content != null)) { part = new Multipart.Part(MAIL_PARAM_ATTACHMENT) { ContentType = attachment.ContentType, Content = attachment.Content, FileName = attachment.Name }; parts.Add(part); } } var mp = new Multipart(parts); var enc = mp.Encode(); var req = WebRequest.CreateHttp(ServiceUrl); req.Method = "POST"; req.ContentType = ContentType.FORM_MULTIPART_ENCODED_BOUNDARY.Args(enc.Boundary); req.ContentLength = enc.Length; var auth = new HttpBasicAuthenticationHelper(API_USER_NAME, AuthorizationKey); auth.AddAuthHeader(req); using (var reqs = req.GetRequestStream()) { reqs.Write(enc.Buffer, 0, (int)enc.Length); using (var resp = req.GetResponse()) { } } }
private static MessageAddresses ParseAddresses(String input) { return(MessageAddresses.ParseAddresses(Utility.SplitStringWithCharNotInsideQuotes(input, ','))); }