Отправил письмо от asp. net до 365 с электронным письмом «от», отличным от имени пользователя. - PullRequest
0 голосов
/ 07 января 2020

Я надеюсь, что кто-то может помочь мне здесь:

Пользователи генерируют электронные письма через мой asp. net веб-сайт. Электронные письма должны отправляться через сервер 365, используя мою учетную запись с моим доменом (например, out@mydomain.com). Я хочу, чтобы поле «от» было адресом электронной почты моего пользователя (например, myuser@anotherdomain.com), чтобы получатели письма увидели его сообщение в качестве отправителя и ответили ему напрямую.

Но когда я пытаюсь это сделать, я получаю сообщение об ошибке (см. ниже).

Я получаю такое же сообщение об ошибке, даже если я пытаюсь отправить электронное письмо, когда поле «от» является другим существующим почтовым ящиком в моем домене (например, myname@mydomain.com)

Очевидно, кто-то в пути (не уверен, если asp. net или сервер 365) блокирует электронную почту, если "from" не совпадает с именем пользователя.

Есть ли способ решить эту проблему>

вот мой код

protected void btnSend_Click(object sender, System.EventArgs e)
{
    AuditLog.Info("here");

    try
    {
        string EmailContent = "test";
        MailMessage msg = new MailMessage();
        msg.IsBodyHtml = true;
        msg.From = new MailAddress("myuser@anotherdomain.com");
        msg.Bcc.Add(msg.From);
        string email = "receiver@gmail.com";
        msg.To.Add(email);
        msg.Subject = "TEst 365";

        System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(EmailContent);
        System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(EmailContent);
        msg.AlternateViews.Add(plainTextView);
        msg.AlternateViews.Add(htmlView);
        System.Net.Mail.SmtpClient client = new SmtpClient();

        client.Host = "smtp.office365.com";
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Credentials = "out@mydomain.com", "MyPassword");
            client.Port = 587;
            client.EnableSsl = true;

            if (client.Host.Trim() != "")
                client.Send(msg);
   }
   catch (Exception ex)
   {
         AuditLog.Info(string.Format("Failed to send mail . Error={0} ",  ex.Message));
   }
   finally
   {
   AuditLog.Info("end");
   }

}


И это ошибка:


{"Transaction failed. The server response was: 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 0.35250:0A00A280, 1.36674:0A000000, 1.61250:00000000, 1.45378:02000000, 1.44866:FD1E0000, 1.36674:0E000000, 1.61250:00000000, 1.45378:021F0000, 1.44866:14030000, 16.55847:AD0F0000, 17.43559:0000000004020000000000000000000000000000, 20.52176:140F2A8A0A00101043050000, 20.50032:140F2A8A7A17000000000000, 0.35180:48050000, 255.23226:0A00A780, 255.27962:0A000000, 255.27962:0E000000, 255.31418:0A00A880, 0.35250:0A000000, 1.36674:0A000000, 1.61250:00000000, 1.45378:02000000, 1.44866:20000000, 1.36674:32000000, 1.61250:00000000, 1.45378:25000000, 1.44866:01000000, 16.55847:8C000000, 17.43559:0000000030030000000000007B00000000000000, 20.52176:140F2A8A0A0070200A00AD80, 20.50032:140F2A8A7A1710106B050000, 0.35180:0A00AE80, 255.23226:4800D13D, 255.27962:0A000000, 255.27962:32000000, 255.17082:DC040000, 0.27745:75050000, 4.21921:DC040000, 255.27962..."}

1 Ответ

0 голосов
/ 07 января 2020

Это прямо в сообщении об ошибке: Exception:SendAsDeniedException.MapiExceptionSendAsDenied;

Вам нужно предоставить своим пользователям разрешения SendAs для out@mydomain.com. Это, вероятно, не то, что вы действительно хотите сделать, так как эти пользователи будут затем потреблять лицензию на офис 365, и если бы они использовали лицензию, они могли бы просто отправлять ее сами.

Реальное решение - не использовать офис 365 в качестве ретранслятора SMTP. Вам следует зарегистрироваться у другого поставщика SMTP, который специально настроен на то, что вы пытаетесь сделать. Мы используем SendGrid , но есть и другие, если вы ищете.

...