Beispiel #1
0
 static void Main(string[] args)
 {
     try
     {
         var z22 = new A4AEmailRecord();
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
     Console.ReadLine();
 }
Beispiel #2
0
        public IEnumerable <A4AEmailRecord> SendMail(A4AEmailService service, A4AMessage msg, A4AUser source, IEnumerable <A4AExpert> targets)
        {
            var z = new A4AEmailRecord();

            var client = new RestClient();

            client.BaseUrl       = new Uri(service.Uri);
            client.Authenticator =
                new RestSharp.Authenticators.HttpBasicAuthenticator(service.ApiUserName,
                                                                    service.ApiPassword);
            foreach (var c in targets)
            {
                RestRequest request = new RestRequest();
                request.AddParameter("domain", service.Domain, ParameterType.UrlSegment);
                request.Resource = "{domain}/messages";
                request.AddParameter("from", $"App4Answers <{source.UserName}@{service.Domain}>");
                request.AddParameter("to", $"{c.FirstName} {c.LastName} <{c.Email}>");
                request.AddParameter("subject", msg.Subject);
                request.AddParameter("html", msg.HtmlContent);
                request.AddParameter("text", msg.TextContent);

                request.Method = Method.POST;
                var result = client.Execute(request);

                var foo = new { message = "", id = "" };

                var json = JsonConvert.DeserializeAnonymousType(result.Content, foo);

                var record = new A4AEmailRecord
                {
                    MessageId        = msg.MessageId,
                    EmailFrom        = source.Email,
                    NameFrom         = source.UserName,
                    EmailTo          = c.Email,
                    NameTo           = c.ExpertName,
                    Status           = A4AEmailStatus.Senttoservice,
                    StatusMessage    = json.message,
                    ServiceMessageId = json.id,
                    Subject          = request.Parameters.First(x => x.Name == "subject").Value.ToString(),
                    Timestamp        = Timestamp.FromDateTime(DateTime.UtcNow)
                };

                if (record.ServiceMessageId.StartsWith("<") && record.ServiceMessageId.EndsWith(">"))
                {
                    record.ServiceMessageId =
                        record.ServiceMessageId.Substring(1, record.ServiceMessageId.Length - 2);
                }
                yield return(record);
            }
        }
Beispiel #3
0
        /*  E.G., we hide the "real" user details in the "userPrefix" on OUR DOMAIN
         *    and the other side has the the "real" user details via the userPrefix+'@'+domain ...
         *    so we can resolve to our internal ides -> email + name
         *   "to": "AAAAA BBBBBB <*****@*****.**>",
         *  "message-id": "*****@*****.**",
         *  "from": "App4Answers <*****@*****.**>",
         *  "subject": "A4A Question on '/Information Technology/Software Development/C#/Germany'"
         *
         */

        public A4AEmailRecord ToRecord(Func <A4AUserNameResolver, string, string> emailNameResolver, string ourDomain)
        {
            var z = new A4AEmailRecord();

            z.RawFrom = message.headers.from;
            z.RawTo   = message.headers.to;
            var from = message.headers.from.ParseLongEmailString();
            var to   = message.headers.to.ParseLongEmailString();

            z.RecordType = from.domain == ourDomain ? A4AEmailRecordType.UserToExpert : A4AEmailRecordType.ExpertToUser;

            if (from.domain == ourDomain)
            {
                z.EmailFrom = emailNameResolver(A4AUserNameResolver.ResolveNameToEmail, from.userPrefix);
                z.NameFrom  = from.userPrefix;
                z.EmailTo   = to.userPrefix + "@" + to.domain;
                z.NameTo    = emailNameResolver(A4AUserNameResolver.ResolveEmailToName, z.EmailTo);
            }
            else
            {
                z.EmailTo   = emailNameResolver(A4AUserNameResolver.ResolveNameToEmail, to.userPrefix);
                z.NameTo    = to.userPrefix;
                z.EmailFrom = from.userPrefix + "@" + from.domain;
                z.NameFrom  = emailNameResolver(A4AUserNameResolver.ResolveEmailToName, z.EmailFrom);
            }

            z.ServiceMessageId = message.headers.messageid;
            z.Subject          = message.headers.subject;
            var convertStatus = eventType.ToString();

            z.Status = (Char.ToUpper(convertStatus[0]) + convertStatus.Substring(1)).ToEnum <A4AEmailStatus>();

            z.Url = storage.url;

            z.Timestamp = new Timestamp
            {
                Seconds = (long)timestamp
            };

            if (z.Status == A4AEmailStatus.Failed)
            {
                z.StatusMessage = deliveryStatus.message;
            }

            return(z);
        }