SmtpClient не подключается, когда сервер выходит из системы (код ошибки: 10060) - PullRequest
0 голосов
/ 19 сентября 2019

У нас есть программа, которая отправляет электронное письмо для утверждения и извлечения ответа с использованием SSE.

На локальном компьютере программа работает, ошибки не обнаружено.Однако, когда программа публикуется на нашем сервере, мы испытываем некоторое исключение SockectException с собственным кодом ошибки 10060

Сообщение об ошибке

Мы используем SSE для проверки всехВходящие с использованием этого кода

public class MailRepository
{
    private readonly string mailServer, login, password;
    private readonly int port;
    private readonly bool ssl;

    public MailRepository(string mailServer, int port, bool ssl, string login, string password)
    {
        this.mailServer = mailServer;
        this.port = port;
        this.ssl = ssl;
        this.login = login;
        this.password = password;
    }

    public IEnumerable<IMessage> GetAllMails()
    {
        var messages = new List<IMessage>();

        using (var client = new ImapClient())
        {
            client.Connect(mailServer, port, ssl);

            // Note: since we don't have an OAuth2 token, disable
            // the XOAUTH2 authentication mechanism.
            client.AuthenticationMechanisms.Remove("XOAUTH2");

            client.Authenticate(login, password);

            // The Inbox folder is always available on all IMAP servers...
            var inbox = client.Inbox;
            inbox.Open(FolderAccess.ReadOnly);
            var results = inbox.Search(SearchOptions.All, SearchQuery.All);
            foreach (var uniqueId in results.UniqueIds)
            {
                var message = inbox.GetMessage(uniqueId);
                var sender = message.From.FirstOrDefault();

                messages.Add(new IMessage() { 
                    htmlBody = message.HtmlBody,
                    body = message.TextBody,
                    subject = message.Subject,
                    sender = sender == null ? "": (sender as MailboxAddress).Address,
                    messageID = uniqueId
                });

                //Mark message as read
                //inbox.AddFlags(uniqueId, MessageFlags.Seen, true);
            }

            client.Disconnect(true);
        }

        return messages;
    }
}

Использование:

 var mail = new MailRepository("imap.gmail.com", 993, true, ConfigurationManager.AppSettings["approvalEmail"], "passwordhere")

И программа также отправляет электронную почту

public string SendContract()
        {
            //var img = Regex.Match(Request["orderscontent"], @"data:image/(?<type>.+?),(?<data>.+)").Groups["data"].Value;

            email mail = new email();

            mail.server = new SmtpClient("smtp.gmail.com");
            mail.server.Port = 587;
            mail.server.EnableSsl = true;
            mail.server.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["approvalEmail"], "passwordhere");
            //mail.server.Timeout = 10000;
            mail.From = new MailAddress(ConfigurationManager.AppSettings["approvalEmail"]);

            mail.To.Add(Request["email"]);
            mail.Subject = "DO Copy";
            mail.IsBodyHtml = true;

            mail.Attachments.Add(
                new Attachment(
                    new MemoryStream(Convert.FromBase64String(Request["orderscontent"])),
                    string.Format("DO_copy_{0:MMddyyyyHHmm}.pdf", DateTime.Now)
                )
            );

            mail.Send();

            return "Sent!";
        }

Обе программы возвращают Сообщение об ошибке .Но мы замечаем, что при входе на сервер программа работает.Но когда сервер выходит из системы, он возвращает ошибку, поэтому я не уверен, что проблема в сервере или в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...