public Response(Email email, Template template) { EmailUid = email.EmailUid; EmailAddresses = new List<EmailAddress> { new EmailAddress //switch the from address to the the two address { Type = EmailAddressType.To, Name = email.FromAddress.Name, Email = email.FromAddress.Email }, new EmailAddress //reply from the specified sender in the template { Type = EmailAddressType.From, Name = template.From, Email = template.FromAddress } }; Subject = template.Subject; HtmlBody = template.HtmlBody; PlainTextBody = template.PlainTextBody; DateResponded = DateTime.UtcNow; OriginalEmail = email.OriginalEmail; }
public static IMail MapToIMail(Email message) { var replyBuilder = ((IMail) message.OriginalEmail).Reply(); replyBuilder.Text = message.PlainTextBody; if (!string.IsNullOrEmpty(message.HtmlBody)) replyBuilder.Html = message.HtmlBody; var builder = replyBuilder.ReplyToAll(GetReplyAddress(message.EmailAddresses)); return builder.Create(); }
public static Email MapEmailToCoreEmail(string accountName, long emailId, IMail email) { var message = new Email { EmailUid = emailId.ToString(), EmailAddresses = ProcessEmailAddresses(email), Subject = email.Subject, HtmlBody = email.GetBodyAsHtml(), PlainTextBody = email.GetBodyAsText(), OriginalEmail = email, }; return message; }
public bool SendEmail(IMailboxSettings mailboxSettings, Email email) { bool success; lock (_key) { success = _mailAdaptor.SendResponse(mailboxSettings, email); if (success) { _mailAdaptor.RemoveLabelFromMessage(mailboxSettings, long.Parse(email.EmailUid), _mailboxLabels.AutoResponseProcessingLabel); _mailAdaptor.ApplyLabelToMessage(mailboxSettings, long.Parse(email.EmailUid), _mailboxLabels.AutoRespondedLabel); } } return success; }
public bool SendResponse(IMailboxSettings mailboxSettings, Email email) { using (var client = new Smtp()) { try { client.ConnectSSL(mailboxSettings.OutboundServerAddress, mailboxSettings.OutboundServerPort); client.LoginOAUTH2(email.FromAddress.Email, _oAuth2Authenticator.GetOAuth2AccessToken(email.FromAddress.Email)); return client.SendMessage(EmailMapper.MapToIMail(email)).Status == SendMessageStatus.Success; } catch (Exception ex) { return false; } } }