Доступ запрещен при отправке почты из программы C# - PullRequest
1 голос
/ 23 марта 2020

Я разрабатываю стороннее дополнение для запуска в программе под названием M-Files. Целью дополнения является отправка почты с помощью SMTP-сервера. Я создал поддельный SMTP-сервер в DevelMail.com только для тестирования. Тестирование SMTP-сервера из браузера работает, но когда я запускаю код, выдается следующая ошибка. Транзакция не удалась. Ответ сервера: 5.7.1 Клиентский хост отклонен: доступ запрещен Вот информация SMTP: Хост: smtp.develmail.com Порт SMTP: 25 Порт TLS / SSL : 465 STARTTLS Порт: 587 Типы аутентификации: ВХОД, CRAM-MD5

Вот код:

MailAddress adressFrom = new MailAddress("notification@mfiles.no", "M-Files Notification Add-on");
MailAddress adressTo = new MailAddress("majdnakhleh@live.no");
MailMessage message = new MailMessage(adressFrom, adressTo);

message.Subject = "M-Files Add-on running";
string htmlString = @"<html>
                    <body>
                    <p> Dear customer</p>
                    <p> This is a notification sent to you by using a mailadress written in a metadata property!.</p>
                    <p> Sincerely,<br>- M-Files</br></p>
                    </body>
                    </html>
                    ";
message.Body = htmlString;

SmtpClient client = new SmtpClient();
client.Host = "smtp.develmail.com";
client.Port = 587;
client.Credentials = new System.Net.NetworkCredential("myUserName", "myPassword");
client.EnableSsl = true;
client.Send(message);

1 Ответ

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

Reason for the Issue:

Обычно, отправка электронной почты с использованием SMTP встречается Access denied, потому что должен быть sender email, который требуется разрешить удаленный доступ. Когда SMTP запрос отправляется от отправителя электронной почты, он проверяет, разрешен ли удаленный доступ. Если нет, то вы всегда получаете сообщение Access denied.

Solution:

Например, допустим, вы хотите отправьте электронное письмо с помощью Gmail SMTP, в этом случае вам необходимо включить Allow less secure apps: ON

How To Set

Вы можете просто просмотреть эту ссылку Less secure app access и установите его на ON

См. Снимок экрана

enter image description here

Code Snippet:

    public static 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 other than gmail smtp
            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;

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential(senderName, senderPass);//Enter the credentails from you have configured earlier
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);

            return true;
        }
        catch (Exception ex)
        {

            return ex;
        }
    }

Note: Убедитесь, что fromEmail и (senderName, senderPass) должны совпадать с электронной почтой и учетными данными .

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

...