static void Main(string[] args) { try { var z22 = new A4AEmailRecord(); } catch (Exception e) { Console.WriteLine(e); } Console.ReadLine(); }
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); } }
/* 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); }