Example #1
0
        public static string GetMessageAboutValidPorts(
            MailProtocols mailProtocol)
        {
            string purpose = string.Empty;

            int[] ports       = new int[0];
            int[] portWithSsl = new int[0];

            switch (mailProtocol)
            {
            case MailProtocols.SMTP:
            {
                purpose     = "для безопасной передачи";
                portWithSsl = SmtpConfig.Where(c => c.Value)
                              .Select(c => c.Key).ToArray();
                ports = SmtpConfig.Where(c => !c.Value).Select(c => c.Key)
                        .ToArray();
                break;
            }

            case MailProtocols.IMAP:
            {
                purpose     = "для безопасного приёма";
                portWithSsl = ImapConfig.Where(c => c.Value)
                              .Select(c => c.Key).ToArray();
                ports = ImapConfig.Where(c => !c.Value).Select(c => c.Key)
                        .ToArray();
                break;
            }
            }

            string result = string.Empty;

            if (ports.Length > 0 && portWithSsl.Length > 0)
            {
                result  = $"{mailProtocol} использует ";
                result += ports.Length == 1 ? "порт " : "порты ";
                result += string.Join(" и ", ports) + ", а также ";
                result += portWithSsl[0] + " " + purpose +
                          " почты (рекомендуется).";
            }

            return(result);
        }
Example #2
0
        public static string GetServerFromMailAddress(
            MailProtocols mailProtocol,
            string address)
        {
            if (address == null)
            {
                throw new ArgumentNullException(nameof(address));
            }

            string result = mailProtocol.ToString().ToLower() + '.';
            int    index  = address.IndexOf('@');

            if (index > 0)
            {
                result += address.Substring(index + 1);
            }

            return(result);
        }
Example #3
0
        public MailProtocol(MailProtocols mailProtocol, string domain, int port)
        {
            if (domain == null)
            {
                throw new ArgumentNullException(nameof(domain));
            }

            if (domain != "gmail.com" &&
                domain != "mail.ru" &&
                !domain.StartsWith("yandex."))
            {
                throw new ArgumentException("Недействительное доменное имя " +
                                            "почтового сервера. Выберите почтовый " +
                                            "ящик на сервисе Gmail, Яндекс.Почта " +
                                            "или Mail.ru.");
            }

            _mailProtocol = mailProtocol;
            Server        = _mailProtocol.ToString().ToLower() + '.' + domain;
            Port          = 0;
            UseSsl        = false;
            SetPort(port);
        }