2016-04-06 6 views
0

Я пытаюсь отправить по электронной почте с помощью C# консоли, но не суметь каждый раз с ошибкой говорит:C# отправка электронной почты неудачи

Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 173.194.65.109:587 

это мой C# код:

SmtpClient client = new SmtpClient(); 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.EnableSsl = true; 
client.Host = "smtp.gmail.com"; 
client.Port = 587; 

// setup Smtp authentication 
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("[email protected]", "myPassword"); 
client.UseDefaultCredentials = false; 
client.Credentials = credentials; 

MailMessage msg = new MailMessage(); 
msg.From = new MailAddress("[email protected]"); 
msg.To.Add(new MailAddress("[email protected]")); 

msg.Subject = "This is a test Email subject"; 
msg.IsBodyHtml = true; 
msg.Body = string.Format("<html><head></head><body><b>Test HTML Email</b></body>"); 
client.Send(msg); 

Я также пытался использовать:

, но все еще без успеха.

это общий код на C#, который написан по всему Интернету на каждом форуме ... но мне это не помогает.

+1

вы должны указать другой порт –

+0

Ваш код отлично подходит для меня. Вам не нужно менять порт, как было предложено.Возможные проблемы с сервером в GMail сегодня утром? Попробуйте снова. Сервер исходящей почты (SMTP): \t smtp.gmail.com - Использовать аутентификацию: Да - Порт для SSL: 465 или 587 – ShaneLS

+0

Если вы используете домашний интернет, некоторые поставщики действительно строги в отношении того, какие порты открыты. – Henry

ответ

0

Я могу думать о 2 проблемах здесь. Первый порт 587 не открыт, это невероятно маловероятно, поскольку это стандартный порт для почты, но вы никогда не знаете.

второй ваш код кажется прекрасным, но вы, возможно, забыли некоторые части в файле app.config. Что-то вроде этого я подозреваю.

<system.net> 
    <mailSettings> 
    <smtp> 
     <network host="[email protected]" port="9999" userName="[email protected]" password="OurOrganisationEmailPassword"/> 
    </smtp> 
    </mailSettings> 
</system.net> 
+0

Прошу прощения за нижний план. Я немного щелкнул, случайно ударил его и до сих пор не заметил. – ShaneLS

0

Единственная причина, я могу думать о том, что ваша сеть (программный или аппаратный брандмауэр, маршрутизатор или модем) блокирует исходящий трафик на 587 или серверах GMail имели проблемы вчера. Однако 587 является стандартным SMTP-портом SSL и не видит причин, по которым он был бы заблокирован, поскольку он также будет использоваться почтовыми клиентами, такими как MS Outlook. В противном случае ваш код в порядке (он прошел проверку в моем офисе). Вы правы, это довольно стандартный код для отправки электронной почты через SmtpClient .net. Возможно, вы захотите попробовать порт GM5 465 (нестандартный, но иногда используемый по причинам, связанным с наследием), а просто для того, чтобы узнать, можете ли вы это сделать.

GMail Поддержка (https://support.google.com/mail/troubleshooter/1668960?hl=en&rd=1) -

исходящей почты (SMTP):
    smtp.gmail.com
    Использовать проверку подлинности: Да
    Порт для SSL: 465 или 587

FYI, вы можете отказаться от обоих:

клиент.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;

Они не нужны для SMTP для GMail. UseDefaultCredentials флаг может вызвать проблемы входа в системе, если вы установите после установки учетных данных (которые у вас есть не сделаны и не бы ваш текущий выпуск). И DeliveryMethod понадобится, только если вы изменили способ доставки по умолчанию (config) по умолчанию, который уже установлен на SmtpDeliveryMethod.Network.

Смежные вопросы