Posso enviar email SMTP através da caixa de correio compartilhada do Office365?

13

Estamos pensando em mudar para o O365; no entanto, desenvolvemos software que usa nosso servidor Exchange atual para enviar email a usuários externos e também a uma caixa de suporte quando ocorrerem erros.

Eu tenho testado isso para garantir que o código que temos no local continuará funcionando com o O365, mas até agora não obtive muito sucesso.

Eu tentei usar o SmtpClient do .Net e o SmtpClient do MailKit e nenhum deles parece funcionar. Eu continuo recebendo erro (este é o erro do MailKit - o erro .Net é semelhante)

"AuthenticationInvalidCredentials: 5.7.3 Autenticação malsucedida [* .prod.exchangelabs.com]"

Posso usar as credenciais que tenho no meu código para fazer logon no OWA - para que eu saiba que as credenciais são válidas. Não é possível enviar email via O356? Existe alguma configuração especial que precise acontecer no Exchange para tornar isso possível?

Aqui está o que eu tentei até agora:

MailKit

var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","[email protected]"));
msg.To.Add(new MailboxAddress("Me","[email protected]"));
msg.To.Add(new MailboxAddress("External User","[email protected]"));
msg.Subject = "Test";
msg.Body = new TextPart("plain"){
   Text = "Here is a message for you"
};
using(var client = new SmtpClient()){
    client.ServerCertificateValidationCallback = (s,c,h,e) => true;
    client.AuthenticationMechanisms.Remove("XOAUTH2"); //Not sure what this does.  Have tried with and without
    client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
    client.Authenticate(new NetworkCredential("[email protected]", "supportPwd"));
    client.Send(msg);
    client.Disconnect(true);
}

O código .Net SmtpClient parecia muito semelhante ao código MailKit.

  1. Existe uma maneira de enviar através do O365 com um usuário licenciado? (código acima)
  2. Existem configurações especiais necessárias no Exchange ou no usuário licenciado para fazer isso funcionar? (Se a resposta a 1 for sim)
  3. É possível enviar email por meio de uma caixa de correio compartilhada para a qual o usuário credenciado possui direitos Enviar como?

Atualizar

Ainda estou recebendo a mesma mensagem de erro. Temos o MFA ativado para nossos usuários do domínio. No entanto, temos uma política que não exige MFA para usuários quando eles estão entrando em um local confiável (o IP da nossa organização). Também listei nosso IP como um IP confiável. Na minha opinião, o MFA não deve ser o problema aqui.

Eu sei que as credenciais estão corretas. Copiei-os do código e colei-os na tela de login ao entrar no M365 - e entrei muito bem.

O que estou fazendo errado?

RHarris
fonte

Respostas:

7
  1. Sim você pode.

  2. Configurações do Usuário: Captura de tela do Admin Center Captura de tela de Gerenciar aplicativos de email

Configurações do servidor: https://support.office.com/en-us/article/POP-IMAP-and-SMTP-settings-for-Outlook-com-d088b986-291d-42b8-9564-9c414e2aa040

SMTP server name smtp.office365.com

SMTP port 587

SMTP encryption method STARTTLS
  1. Não, você não pode. Você precisa de um usuário licenciado para enviar email via SMTP.

https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin/set-up-smtp-relay-with-shared-mailbox/d7b98214-9564-432c-b098-525a98c529fb

Um cliente nosso possui um sistema de boletim informativo configurado com o TYPO3 e tivemos que criar uma nova caixa de correio para isso. No entanto, uma leve será suficiente: em vez de um Office 365 Business Premium, atribuímos apenas uma licença F1 do Office 365.

Editar: também encontrou o seguinte: A caixa de correio compartilhada do Office365 pode usar SMTP?

Wolfgang Jacques
fonte
Portanto, isso parece responder à minha pergunta sobre uma Caixa de Correio Compartilhada. Mas no meu código inicial, estou trabalhando com um usuário licenciado e isso também não está funcionando - deveria?
RHarris 14/01
@RHarris sim, deveria. Veja a resposta editada. Desculpe pela primeira resposta incompleta.
Wolfgang Jacques
0

Para quem está tendo problemas semelhantes, descobri que meu problema era uma política de acesso condicional. A Microsoft fornece umaBaseline Policy: Block Legacy Authentication - que foi ativado em nosso AAD.

Ao examinar a Política, ele foi projetado para bloquear qualquer mecanismo de autenticação que não exija MFA. Isso inclui coisas como POP e SMTP. Depois de desabilitar esta política, o código listado acima funcionou perfeitamente.

RHarris
fonte