private static void FillMessage(MailMessage message, MailInfo mailInfo) { if (!string.IsNullOrEmpty(mailInfo.Subject)) { message.Subject = mailInfo.Subject; } message.IsBodyHtml = mailInfo.IsHtml; message.Body = mailInfo.Body; MailAddressInfo mailAddressInfo = mailInfo.MailAddressInfo; if (mailAddressInfo != null) { if (!string.IsNullOrEmpty(mailAddressInfo.From)) { message.From = new MailAddress(mailAddressInfo.From); } FillAddress(message.To, mailAddressInfo.To); FillAddress(message.CC, mailAddressInfo.CC); FillAddress(message.Bcc, mailAddressInfo.Bcc); } if ((mailInfo.AttachmentList != null) && (mailInfo.AttachmentList.Count > 0)) { foreach (string str in mailInfo.AttachmentList) { message.Attachments.Add(new Attachment(str)); } } if (mailInfo.IsHtml && mailInfo.LinkImgRes) { string body = mailInfo.Body; List <LinkedResource> imgResources = GetImgResources(ref body, mailInfo.ImgDirectory); AlternateView item = AlternateView.CreateAlternateViewFromString(body, mailInfo.Encoding, "text/html"); foreach (LinkedResource resource in imgResources) { item.LinkedResources.Add(resource); } message.AlternateViews.Add(item); } }
private static List <AccountInfo> ToAccountInfoList(IEnumerable <Account> accounts, IReadOnlyCollection <MailSignatureData> signatures, IReadOnlyCollection <MailAutoreplyData> autoreplies) { var accountInfoList = new List <AccountInfo>(); foreach (var account in accounts) { var mailboxId = account.MailboxId; var accountIndex = accountInfoList.FindIndex(a => a.Id == mailboxId); var signature = signatures.First(s => s.MailboxId == mailboxId); var autoreply = autoreplies.First(s => s.MailboxId == mailboxId); var isAlias = account.ServerAddressIsAlias; if (!isAlias) { var groupAddress = account.ServerMailGroupAddress; MailAddressInfo group = null; if (!string.IsNullOrEmpty(groupAddress)) { group = new MailAddressInfo(account.ServerMailGroupId, groupAddress, account.ServerDomainId); } if (accountIndex == -1) { var authErrorType = MailBoxData.AuthProblemType.NoProblems; if (account.MailboxDateAuthError.HasValue) { var authErrorDate = account.MailboxDateAuthError.Value; if (DateTime.UtcNow - authErrorDate > Defines.AuthErrorDisableTimeout) { authErrorType = MailBoxData.AuthProblemType.TooManyErrors; } else if (DateTime.UtcNow - authErrorDate > Defines.AuthErrorWarningTimeout) { authErrorType = MailBoxData.AuthProblemType.ConnectError; } } var accountInfo = new AccountInfo( mailboxId, account.MailboxAddress, account.MailboxAddressName, account.MailboxEnabled, account.MailboxQuotaError, authErrorType, signature, autoreply, !string.IsNullOrEmpty(account.MailboxOAuthToken), account.MailboxEmailInFolder, account.MailboxIsTeamlabMailbox, account.ServerDomainTenant == Defines.SHARED_TENANT_ID); if (group != null) { accountInfo.Groups.Add(group); } accountInfoList.Add(accountInfo); } else if (group != null) { accountInfoList[accountIndex].Groups.Add(group); } } else { var alias = new MailAddressInfo(account.ServerAddressId, string.Format("{0}@{1}", account.ServerAddressName, account.ServerDomainName), account.ServerDomainId); accountInfoList[accountIndex].Aliases.Add(alias); } } return(accountInfoList); }