Как отправить письмо из защищенной сети с закрытым SMTP-портом
Я пытался отправить электронное письмо из приложения для настольных компьютеров с помощью сервера SMTP, но моя сеть защищена и порт закрыт.
Итак, есть ли другой способ отправки электронной почты, например, используя Gmail API?!
Я использую этот код, но не работает со мной
public void Send_Mail(string HTMLBody, string MailTo)
{
MailMessage Mail = new MailMessage();
SmtpClient SmtpClient = new SmtpClient();
string MailSubject = "Subject;
string MailFrom = "from@xxxx.com";
Mail.Subject = MailSubject;
Mail.Body = HTMLBody;
Mail.To.Add(MailTo);
MailAddress From = new MailAddress(MailFrom);
Mail.From = From;
Mail.IsBodyHtml = true;
SmtpClient.Host = "host";
SmtpClient.Port = port;
SmtpClient.EnableSsl = true;
SmtpClient.Send(Mail);
}
3 ответа
Я работал в месте, где у нас была похожая проблема. Настольным компьютерам не разрешалось отправлять электронные письма, но серверам можно было разрешать общаться с SMTP-сервером.
В итоге мы создали службу Windows, которая прослушивала сообщения, помещенные в очередь (в нашем случае это Tibco EMS, но MSMQ тоже подойдет). Служба взяла сообщения из очереди и передала их на SMTP-сервер, которому разрешено использовать.
Это добавило в систему дополнительный шаг и процесс, но этого было достаточно, чтобы удовлетворить отдел соответствия.
Если ваша сеть не разрешает исходящие соединения с тем портом, который использует gmail (или ограничивает определенный протокол, или IP, и т. Д.), То вы ничего не можете сделать. Вам нужно будет поговорить с "сетевыми парнями", чтобы снять это ограничение для вас или, что еще лучше, попросить их предоставить вам локальный smtp-сервер для использования.
Обычно "безопасная сеть" означает, что существует межсетевой экран, который ограничивает трафик и разрешает связь только на определенных портах, таких как порт 80 и, возможно, 8080.
Такие сети (рабочие места, общие офисные помещения, школы и т. Д.) Обычно имеют исходящий SMTP-сервер, который вы можете использовать. В качестве альтернативы вам нужно будет использовать сервер, с которым можно связаться через фактически открытый (ые) порт (ы) или ретранслировать / туннелировать запрос через третью сторону.