¿Puedo enviar correos electrónicos SMTP a través del buzón compartido de Office365?

13

Estamos pensando en mudarnos a O365; sin embargo, desarrollamos software que utiliza nuestro servidor Exchange actual para enviar correos electrónicos tanto a usuarios externos como a un cuadro de soporte cuando se producen errores.

He estado probando esto para asegurarme de que el código que tenemos instalado continuará funcionando con O365, pero hasta ahora no he tenido mucho éxito.

He intentado usar SmtpClient de .Net así como SmtpClient de MailKit y ninguno parece funcionar. Sigo recibiendo errores (este es el error de MailKit; el error .Net es similar)

"AuthenticationInvalidCredentials: 5.7.3 Autenticación fallida [* .prod.exchangelabs.com]"

Puedo usar las credenciales que tengo en mi código para iniciar sesión en OWA, por lo que sé que las credenciales son válidas. ¿No es posible enviar un correo electrónico a través de O356? ¿Hay alguna configuración especial que tenga que suceder en Exchange para que esto sea posible?

Esto es lo que he probado hasta ahora:

MailKit

var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","support@mydomain.com"));
msg.To.Add(new MailboxAddress("Me","me@mydomain.com"));
msg.To.Add(new MailboxAddress("External User","euser@externaldomain.com"));
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("support@mydomain.com", "supportPwd"));
    client.Send(msg);
    client.Disconnect(true);
}

El código .Net SmtpClient se parecía mucho al código MailKit.

  1. ¿Hay alguna forma de enviar a través de O365 con un usuario con licencia? (código de arriba)
  2. ¿Se requiere alguna configuración especial en Exchange o en el usuario con licencia para que esto funcione? (Si la respuesta a 1 es sí)
  3. ¿Es posible enviar correos electrónicos a través de un buzón compartido para el cual el usuario acreditado tiene derechos de Enviar como?

Actualizar

Todavía recibo el mismo mensaje de error. Tenemos MFA habilitado para nuestros usuarios de dominio. Sin embargo, tenemos una política que no requiere MFA para los usuarios cuando inician sesión desde una ubicación confiable (IP de nuestra organización). También enumeré nuestra IP como una IP de confianza. En mi opinión, MFA no debería ser el problema aquí.

Sé que las credenciales son correctas. Los copié del código y los pegué en la pantalla de inicio de sesión cuando inicié sesión en M365, y entré bien.

¿Qué estoy haciendo mal?

RHarris
fuente

Respuestas:

7
  1. Sí tu puedes.

  2. Ajustes de usuario: Captura de pantalla del Centro de administración Captura de pantalla de Administrar aplicaciones de correo electrónico

Configuración del 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. No, no puedes. Necesita un usuario con licencia para enviar correo a través de SMTP.

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

Un cliente nuestro tiene un sistema de boletines configurado con TYPO3 y tuvimos que crear un nuevo buzón para esto. Sin embargo, una ligera será suficiente: en lugar de Office 365 Business Premium solo asignamos una licencia de Office 365 F1.

Editar: también encontró esto: ¿Puede el buzón compartido de Office365 usar SMTP?

Wolfgang Jacques
fuente
Entonces eso parece responder a mi pregunta con respecto a un buzón compartido. Pero en mi código inicial, estoy trabajando con un usuario con licencia y eso tampoco funciona, ¿debería?
RHarris
@RHarris sí, debería. Ver respuesta editada. Perdón por la primera respuesta incompleta.
Wolfgang Jacques
0

Para cualquiera que tenga problemas similares, descubrí que mi problema era una Política de acceso condicional. Microsoft proporciona unBaseline Policy: Block Legacy Authentication - que se había activado en nuestro AAD.

Al observar la Política, está diseñada para BLOQUEAR cualquier mecanismo de autenticación que no requiera MFA. Esto incluye cosas como POP y SMTP. Una vez que desactivé esta política, el código mencionado anteriormente funcionó bien.

RHarris
fuente