2016-07-20 8 views
0

Сохраняет нарушение и сбой при client.Send(email); с ошибкой выше. Четырехместный проверял все.System.Net.Mail.SmtpException {«Отказ от отправки электронной почты».}

Вот мой код:

private void submit_Click(object sender, RoutedEventArgs e) 
{ 
    string from = "************@gmail.com"; 
    string to = "*******@sru.edu"; 
    string subject = "PSLM Test"; 
    string body = "PSLM Test"; 
    string server = "smtp.gmail.com"; 
    int port = 465; 
    string username = "************"; 
    string password = "*******"; 

    SmtpClient client = new SmtpClient(server, port); 
    client.Credentials = new NetworkCredential(username, password); 

    MailMessage email = new MailMessage(from, to, subject, body); 

    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath)); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2])); 

    client.Send(email); 
} 

Что я делаю не так, пожалуйста?

+2

Какая основная ошибка? Проверьте свойство 'InnerException' исключения, которое вы поймали. – lorond

+0

_Always_ проверяет свойство ['InnerException'] (https://msdn.microsoft.com/en-us/library/windows/apps/system.exception.innerexception). –

+0

Я боюсь, что это не одно, мы можем просто указать на ошибку в вашем коде, это будет связано с настройками вашего почтового сервера. Вы проверили «InnerException», который может содержать более подробную информацию о фактической проблеме. – Jamiec

ответ

3

Gmail SMTP-порт - 587, а не 465. Вам также необходимо установить SmtpClient.EnableSsl на true.

client.EnableSsl = true; 

Это возможно, что вам может понадобиться установить client.UseDefaultCredentials для false перед установкой новых учетных данных в сети. Это не всегда так - все, что я знаю, это то, что когда другие варианты исчерпаны, это имеет тенденцию работать.

client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential(username, password); 

Поскольку вы используете gmail, вам необходимо разрешить менее безопасные приложения в настройках безопасности вашей учетной записи google. Если вы используете двухфакторную аутентификацию, вам также нужно будет создать пароль для приложения и использовать его в своем коде.

+1

Это было! Оно работало завораживающе! Спасибо огромное! @ user1666620 Мои голоса не будут публично показываться, пока у меня не будет 15 репутации, но я определенно проголосовал за вас! – Shaheer

-1
SmtpClient client= new SmtpClient(server, port); 

    client.Credentials = new System.Net.NetworkCredential(username, password); 
    client.UseDefaultCredentials = true; 
    client.DeliveryMethod = SmtpDeliveryMethod.Network; 
    client.EnableSsl = true; 

    MailMessage email = new MailMessage(from, to, subject, body); 

    email.Attachments.Add(new Attachment(GlobalVariables.attachedFilePath)); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[0])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[1])); 
    email.Attachments.Add(new Attachment(GlobalVariables.formsAndTemplatesPath[2])); 

    client.Send(email); 
+1

Это плохой ответ - он не объясняет, почему код OPs неверен, или укажите, какие улучшения сделаны. На самом деле это тоже не сработает. – user1666620

+0

как у сказать, что это плохой ответ? – abaravindan

+1

Я объяснил в своем комментарии выше. Все, что вы делали, это опубликовать код с нулевым объяснением того, какие изменения вы сделали или почему, или как ваш код лучше. – user1666620