Example #1
0
        protected override bool DoSendMsg(Message msg)
        {
            if (msg == null || !msg.AddressToBuilder.All.Any())
            {
                throw new WebException("TwilioSink.DoSendMsg(msg==null)");
            }

            if (msg.Body.IsNullOrEmpty())
            {
                throw new WebException("TwilioSink.DoSendMsg(msg.body==null");
            }

            var addressTo = msg.AddressToBuilder.GetMatchesForChannels(SupportedChannelNames).ToList();

            var from = Uri.EscapeDataString(From);
            var body = Uri.EscapeDataString(msg.Body);
            var auth = new HttpBasicAuthenticationHelper(AccountSid, AuthToken);

            var wasSent = false;

            foreach (var addressee in addressTo)
            {
                var to = Uri.EscapeDataString(addressee.ChannelAddress);
                try
                {
                    var wasSentNow = doCall(from, to, body, auth);
                    wasSent |= wasSentNow;
                }
                catch (Exception error)
                {
                    var et = error.ToMessageWithType();
                    Log(MessageType.Error, "{0}.DoSendMsg(msg): {1}".Args(this.GetType().FullName, et), et);
                }
            }
            return(wasSent);
        }
Example #2
0
        private bool doCall(string from, string to, string body, HttpBasicAuthenticationHelper auth)
        {
            var request = new WebClient.RequestParams(this)
            {
                Method         = HTTPRequestMethod.POST,
                ContentType    = ContentType.FORM_URL_ENCODED,
                BodyParameters = new Dictionary <string, string>
                {
                    { "From", from },
                    { "To", to },
                    { "Body", body }
                }
            };

            auth.AddAuthHeader(ref request);

            var response = WebClient.GetJson(new Uri(URI_MESSAGES.Args(AccountSid)), request);

            if (response[ERROR_MESSAGE].AsString().IsNotNullOrEmpty())
            {
                return(false);
            }
            return(true);
        }
Example #3
0
        //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()) { }
            }
        }