Сервер SMTP Office365 не получает аутентификацию [дубликат]

Тип математики с плавающей запятой, которая может быть реализована на цифровом компьютере, обязательно использует приближение реальных чисел и операций над ними. (Стандартная версия стандартная работает до более чем пятидесяти страниц документации и имеет комитет для рассмотрения ее ошибок и дальнейшего уточнения.)

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

Если вам нужна бесконечная точность (например, вместо числа π одного из его более коротких резервных копий), вы должны написать или использовать символическую математическую программу.

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

8
задан Rowland Shaw 9 March 2016 в 11:00
поделиться

6 ответов

Убедитесь, что вы используете фактический адрес электронной почты office365 для учетной записи. Вы можете найти его, нажав кнопку профиля в Outlook365. Я боролся с аутентификацией, пока не понял, что адрес электронной почты, который я пытался использовать для аутентификации, не был фактическим почтовым ящиком почтового ящика. Фактическая учетная запись электронной почты может иметь форму: account@company.onmicrosoft.com.

3
ответ дан Derek Wade 26 August 2018 в 22:52
поделиться

Мы работаем, преобразовывая почтовые ящики (от адреса) с «общего» на «обычный». Перед этим изменением мое приложение прекратило отправку электронной почты при переносе из Gmail в Office 365. Никаких других изменений кода не требовалось, кроме того, чтобы установить хост на smtp.office365.com.

2
ответ дан Johnie Karr 26 August 2018 в 22:52
поделиться

Чтобы помочь в отладке, попробуйте временно переключиться на MailKit и использовать фрагмент кода, например следующее:

using System;

using MailKit.Net.Smtp;
using MailKit.Security;
using MailKit;
using MimeKit;

namespace TestClient {
    class Program
    {
        public static void Main (string[] args)
        {
            var message = new MimeMessage ();
            message.From.Add (new MailboxAddress ("", "test.user@mydomain.com"));
            message.To.Add (new MailboxAddress ("", "test.recipient@anotherdomain.com"));
            message.Subject = "Test message";

            message.Body = new TextPart ("plain") { Text = "This is the message body." };

            using (var client = new SmtpClient (new ProtocolLogger ("smtp.log"))) {
                client.Connect ("smtp.office365.com", 587, SecureSocketOptions.StartTls);

                client.Authenticate ("test.user@mydomain.com", "password");

                client.Send (message);
                client.Disconnect (true);
            }
        }
    }
}

Это приведет к регистрации всей транзакции в файл с именем «smtp.log», который вы затем можете прочитать и увидеть, где все может пойти не так.

Обратите внимание, что smtp.log, скорее всего, содержит команду AUTH LOGIN, за которой следуют несколько команд, закодированных base64 ( это ваш пользователь / пропуск), поэтому, если вы делитесь журналом, обязательно очистите эти строки.

Я ожидаю, что это будет иметь ту же ошибку, что и в System.Net.Mail, но это поможет вам понять, что происходит.

Предполагая, что это не сработает (и я ожидаю, что это произойдет), попробуйте перейти на SecureSocketOptions.None и / или попытаться комментировать Authenticate().

Посмотрите, как это изменит ошибку, которую вы видите.

2
ответ дан jstedfast 26 August 2018 в 22:52
поделиться

В моем случае моя проблема не была связана с кодом, а как-то с почтовым ящиком Exchange. Не знаю, почему, но это решило мою проблему:

  • Перейдите к настройкам обмена для почтового ящика этого пользователя и получите доступ к Mail Delegation
  • В разделе «Отправить как» удалите NT AUTHORITY \ SELF, а затем добавьте учетную запись пользователя.

Это дает разрешения пользователю отправлять электронные письма от своего имени. Теоретически NT AUTHORITY \ SELF должен делать то же самое, но по какой-то причине это не сработало.

Источник: http://edudotnet.blogspot.com.mt/2014/02/smtp -Microsoft-офисно-365-нетто-smtp.html

1
ответ дан Matt R 26 August 2018 в 22:52
поделиться

В моем случае после того, как я попробовал все это предложение без везения, я связался с поддержкой Microsoft, и их предложение состояло в том, чтобы просто сменить пароль.

Это исправило мою проблему.

Обратите внимание, что пароль не истек, потому что я успешно выполнил вход в office365, однако сброс решил проблему.

Урок: не доверяйте истечению срока действия Office 365 дата, в моем случае срок действия пароля истекает через 1-2 месяца, но он не работает. Это привело меня к исследованию в моем коде, и только после того, как я понял, что проблема была в пароле Office365, который был «поврежден» или «досрочно истек».

Не забывайте каждые 3 месяца «обновить» пароль.

4
ответ дан Matteo Conta 26 August 2018 в 22:52
поделиться

Пожалуйста, проверьте ниже код, который я тестировал для отправки электронной почты с помощью Exchange Online:

        MailMessage msg = new MailMessage();
        msg.To.Add(new MailAddress("YourEmail@hotmail.com", "XXXX"));
        msg.From = new MailAddress("XXX@msdnofficedev.onmicrosoft.com", "XXX");
        msg.Subject = "This is a Test Mail";
        msg.Body = "This is a test message using Exchange OnLine";
        msg.IsBodyHtml = true;

        SmtpClient client = new SmtpClient();
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential("XXX@msdnofficedev.onmicrosoft.com", "YourPassword");
        client.Port = 587; // You can use Port 25 if 587 is blocked
        client.Host = "smtp.office365.com";
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.EnableSsl = true;
        try
        {
            client.Send(msg);

        }
        catch (Exception ex)
        {

        }

Порт отправлен (587) для отправки сообщения. Хотя порт 587 не требует мандата STARTTLS, использование порта 587 стало популярным примерно в то же время, когда осознание того, что шифрование SSL / TLS между клиентами и серверами является важной проблемой безопасности и конфиденциальности.

1
ответ дан Nan Yu 26 August 2018 в 22:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: