Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.189.2.122] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Нашел рабочий код:
public static void Send(string StrSubject,string StrBody,string StrTo) { MailMessage Message = new MailMessage(); Message.Subject = StrSubject; Message.Body = StrBody; //Message.BodyEncoding = Encoding.GetEncoding("Windows-1254"); // Turkish Character Encoding// кодировка эсли нужно! Message.From = new System.Net.Mail.MailAddress("Почта"); Message.To.Add(new MailAddress(StrTo)); System.Net.Mail.SmtpClient Smtp = new SmtpClient("smtp.qip.ru", 25);//эсли здесь заполнено то строчка ниже не нужна!!!! //Smtp.Host = "smtp.qip.ru"; //например для gmail (smtp.gmail.com), mail.ru(smtp.mail.ru) Smtp.EnableSsl = true; // включение SSL для gmail нужно!!! для mail.ru не нада!!! Smtp.Credentials = new System.Net.NetworkCredential("Почта", "Пароль"); Smtp.Send(Message);//отправка } Вопрос как автоматически заполнять SmtpClient? То есть определить когда почта относиться к mail.ru, а когда к gmail.com или к другим почтовым серверам? |
Сообщ.
#2
,
|
|
|
У меня есть два вопроса.
1) Почему тема размещена в разделе .NET: Web приложения если это по сути общие вопросы по дот нету? 2) У вас проблема определить по входящем адресу какая почта: test1@gmail.com и например test1234@mail.ru? Я вас правильно понял? Если у вас проблема со вторым пунктом, то для тех адресов которые вы знаете вам нужно просто проверить адрес регуляркой на шаблоны тех почтовых серверов которые вы будете хранить у себя. Либо для каждого почтового сервера хранить настройки например в БД public interface IEmailServerSettings { /// <summary> /// Сервер /// </summary> string Address { get; set; } /// <summary> /// Порт /// </summary> int Port { get; set; } /// <summary> /// Имя пользователя /// </summary> string UserName { get; set; } /// <summary> /// Пароль пользователя /// </summary> string UserPassword { get; set; } /// <summary> /// Признак необходимости использовать SSL /// </summary> bool UseSsl { get; set; } /// <summary> /// Тип сервера настроек электронной почты /// </summary> EmailServerType EmailServerType { get; set; } } Пример интерфейса который вам может подойти. |
Сообщ.
#3
,
|
|
|
У меня проблема как определить по входящем адресу какая почту: test1@gmail.com и например test1234@mail.ru? Предлогают по днс имени находить Smtp, но я не могу найти толковый код.
|
Сообщ.
#4
,
|
|
|
Держи пример. Подгонишь под свой вариант. Сел набросал только что. Я вижу реально что на форуме ответ получить в последнее время тупо нереально. В .NET разделах отвечает в основном 2-3 человека, и то очень редко .
class Program { static void Main(string[] args) { var emailsSettings = new List<IEmailServerSettings>(new[] { new EmailServerSettings { Pattern = "[.\\-_a-z0-9]+@gmail.com", Port = 25 }, new EmailServerSettings { Pattern = "[.\\-_a-z0-9]+@gmail.com", Port = 995 }, new EmailServerSettings { Pattern = "[.\\-_a-z0-9]+@([a-z0-9][\\-a-z0-9]+\\.)+[a-z]{2,6}" } }); string email = "test1234@gmail.com"; foreach (var settings in emailsSettings) { if (settings.IsValid(email)) { //Вы полняем нужную нам функцию Send(string.Empty, string.Empty, string.Empty, settings); } } Console.ReadLine(); } public static void Send(string StrSubject, string StrBody, string StrTo, IEmailServerSettings emailServerSettings) { MailMessage Message = new MailMessage(); Message.Subject = StrSubject; Message.Body = StrBody; //Message.BodyEncoding = Encoding.GetEncoding("Windows-1254"); // Turkish Character Encoding// кодировка эсли нужно! Message.From = new System.Net.Mail.MailAddress(emailServerSettings.Address); Message.To.Add(new MailAddress(StrTo)); System.Net.Mail.SmtpClient Smtp = new SmtpClient(emailServerSettings.Address, emailServerSettings.Port);//эсли здесь заполнено то строчка ниже не нужна!!!! Smtp.EnableSsl = emailServerSettings.UseSsl; // включение SSL для gmail нужно!!! для mail.ru не нада!!! if (string.IsNullOrEmpty(emailServerSettings.UserName)) { Smtp.Credentials = new System.Net.NetworkCredential(emailServerSettings.UserName, emailServerSettings.UserPassword); } Smtp.Send(Message);//отправка } } public interface IEmailServerSettings { /// <summary> /// Сервер /// </summary> string Address { get; set; } /// <summary> /// Порт /// </summary> int Port { get; set; } /// <summary> /// Имя пользователя /// </summary> string UserName { get; set; } /// <summary> /// Пароль пользователя /// </summary> string UserPassword { get; set; } /// <summary> /// Признак необходимости использовать SSL /// </summary> bool UseSsl { get; set; } /// <summary> /// Валидация адреса /// </summary> string Pattern { get; set; } /// <summary> /// Проверка емейл на валидность /// </summary> /// <param name="email"></param> /// <returns></returns> bool IsValid(string email); } public class EmailServerSettings : IEmailServerSettings { public string Address { get; set; } public int Port { get; set; } public string UserName { get; set; } public string UserPassword { get; set; } public bool UseSsl { get; set; } public string Pattern { get; set; } public bool IsValid(string email) { var isMatch = Regex.Match(email, Pattern, RegexOptions.IgnoreCase); return isMatch.Success; } } |