zhenbang bang Ответов: 2

Проблема с отправкой проверочного письма "сбой отправки почты"


это ошибка кода :
System.Net.Mail.SmtpException
  HResult=0x80131500
  Message=Failure sending mail.
  Source=System
  StackTrace:
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at Verification.Form1.button1_Click(Object sender, EventArgs e) in C:\Users\daryl\source\repos\Verification - Copy\Verification\Form1.cs:line 36
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at Verification.Program.Main() in C:\Users\daryl\source\repos\Verification - Copy\Verification\Program.cs:line 19

  This exception was originally thrown at this call stack:
    [External Code]

Inner Exception 1:
WebException: The remote name could not be resolved: 'darylds2001@gmail.com'


Что я уже пробовал:

это мой код.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;
using System.Net;
using System.Windows.Forms;

namespace Verification
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (MailMessage mail = new MailMessage())
            {
                mail.From = new MailAddress("***@gmail.com"); //enter whatever email you are sending from here 
                mail.To.Add(textBox1.Text); //Text box that the user enters their email address 
                mail.Subject = "Email Subject"; //enter whatever subject you would like 
                mail.Body = "<p> Dear ......</p> <br> <p> Enter message here </p>";
                mail.IsBodyHtml = true;

                using (SmtpClient smtp = new SmtpClient("***@gmail.com", 587)) //enter the same email that the message is sending from along with port 587
                {
                    smtp.Credentials = new NetworkCredential("***@gmail.com", "******"); //Enter email with password 
                    smtp.EnableSsl = true;
                    smtp.Send(mail);
                }

            }
        }
    }


}

Richard Deeming

Удаление содержания вашего вопроса после того, как на него был дан ответ, является чрезвычайно грубым.

Я предполагаю, что вы пытались скрыть адрес электронной почты и пароль, которые вы опубликовали публично. Это не сработает - предыдущие версии вашего вопроса все еще доступны для просмотра.

Я отменил вашу деструктивную правку и удалил адрес электронной почты и пароль из вашего вопроса. Если это ваши настоящие учетные данные GMail, я предлагаю вам изменить их срочно, прежде чем хакер завладеет вашим аккаунтом.

2 Ответов

Рейтинг:
13

Garth J Lancaster

Эта строка в вашем коде

Цитата:
использование (SmtpClient smtp = new SmtpClient("darylds2001@gmail.com", 587))
это, конечно, неправильно - конструктор принимает SmtpClient SMTP-сервера/сервера, т. е. сервера электронной почты, т. е. "smtp.gmail.com"

Я не знаю оттуда этого
Цитата:
//введите тот же адрес электронной почты, с которого отправляется сообщение, а также порт 587
пришел откуда-то, но это неверно

smtp.EnableSsl = true;
"ТИК", хорошо

Вы также можете использовать MailKit (сначала вам нужно будет установить пакет Nuget)

var mailMessage = new MimeMessage();
mailMessage.From.Add(new MailboxAddress("from name", "from email"));
mailMessage.To.Add(new MailboxAddress("to name", "to email"));
mailMessage.Subject = "subject";
mailMessage.Body = new TextPart("plain")
{
    Text = "Hello"
};

using (var smtpClient = new SmtpClient())
{
    smtpClient.Connect("smtp.gmail.com", 587, true);
    smtpClient.Authenticate("user", "password");
    smtpClient.Send(mailMessage);
    smtpClient.Disconnect(true);
}


Рейтинг:
1

OriginalGriff

На первый взгляд, вы не правильно заполнили биты: те, где написано "введите любой адрес электронной почты, который вы отправляете отсюда" и "введите адрес электронной почты с паролем"

Если они не совпадают с настройками на вашем почтовом сервере, почта не будет выходить.
Используйте отладчик для проверки объекта исключения при возникновении ошибки и посмотрите, есть ли еще какая-либо информация в поле InnerException.