コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }