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); }
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); }
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); }