Почему я получаю сообщение об ошибке при c#? - PullRequest
1 голос
/ 04 марта 2020

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

Blockquote.

Можете ли вы объяснить мне, что не так с моим кодом?

Вот оно:

SmtpClient client = new SmtpClient("smtp.gmail.com");  


client.Port = 587;
client.EnableSsl = true;
client.Timeout = 100000;
client.EnableSsl = true;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("myEmailAdress@gmail.com", "myPassword");  


MailMessage msg = new MailMessage();
msg.To.Add("receiver@gmail.com");
msg.From = new MailAddress("sender@gmail.com");
msg.Subject = "My subject";
msg.Body = "My body";  

client.Send(msg);  

MessageBox.Show("Message sent !");

Ответы [ 3 ]

3 голосов
/ 04 марта 2020

Я встречал то же самое раньше.

Вы получаете эту ошибку, потому что вы не установили ON на Less secure app access для sender@gmail.com, так как используете порт Gmail SMTP.

Reason:

Ваша электронная почта не имеет разрешения на удаленный доступ. Вы должны настроить это. Предположим, вы хотите отправить электронное письмо от sender@gmail.com, поэтому вы установили это разрешение NO для этой учетной записи.

How To Set:

Вы можете попробовать, как показано ниже

enter image description here

Или можете открыть эту вкладку по этой ссылке напрямую Less secure app access

Update:

Согласно вашему комментарию, это для вас, который отлично работает с начала моей карьеры

public object SendMail(string fromEmail, string toEmail, string mailSubject, string mailBody, string senderName, string senderPass, string attacmmentLocationPath)
        {
            try
            {
                MailMessage mail = new MailMessage();
                //Must be change before using 
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

                mail.From = new MailAddress(fromEmail);
                mail.To.Add(toEmail);
                mail.Subject = mailSubject;
                mail.Body = mailBody;
                mail.IsBodyHtml = true;
               // mail.Attachments.Add(new Attachment(@attacmmentLocationPath));

                SmtpServer.Port = 587;
                SmtpServer.Credentials = new System.Net.NetworkCredential(senderName, senderPass);
                SmtpServer.EnableSsl = true;

                SmtpServer.Send(mail);

                return true;
            }
            catch (Exception ex)
            {

                return ex;
            }
        }

Надеюсь, это поможет.

1 голос
/ 04 марта 2020

Этот код работает для Gmail, он очень похож на ваш с небольшими отличиями, но если вы попробуете это, и он не будет работать для вас, проблема не в коде - возможно, в какой-то другой проблеме, связанной с сетью, которой вы являетесь сначала нужно исправить:

            using (var msg = new MailMessage())
            {
                msg.From = new MailAddress("fromaddress@gmail.com");
                msg.To.Add("toaddress@gmail.com");
                msg.Subject = subject;
                msg.Body = body;
                msg.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    smtp.Host = "smtp.gmail.com";
                    smtp.Port = 587;
                    smtp.EnableSsl = true;
                    smtp.Credentials = new NetworkCredential("xxx@gmail.com","password");

                    smtp.Send(msg);
                }

            }
0 голосов
/ 04 марта 2020

Клиент SMTP может войти в систему, используя механизм аутентификации, выбранный из тех, которые поддерживаются серверами SMTP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...