[RESOLVIDO] Configuração SMTP com Office 365

Olá pessoal, bom dia!

Eu tenho uma aplicação a qual utiliza uma configuração de envio de e-mail à partir de uma base de dados, ou seja. busca as configurações de SMTP no banco SQL.
Eu utilizo a biblioteca do Swift_Mailer que sempre funcionou normalmente no envio em outras configurações de SMTP, porém com as configurações do office365 não funciona e me retorna o seguinte erro:

"Expected response code 250 but got code “530”, with message "530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM "

Alguém tem alguma ideia do que possa ser? Estou esquecendo de informar algum parâmetro?

Obs.: As configurações do office365 utilizam SSL Enable e tipo de conexão TLS.

Agradeço desde já!

qual o SMTP que esta usando e porta?

https://support.office.com/en-us/article/POP-and-IMAP-settings-for-Outlook-Office-365-for-business-7fc677eb-2491-4cbc-8153-8e7113525f6c?ui=en-US&rs=en-US&ad=US&fromAR=1

aparentemente pelo que diz a Microsoft (em relação a impresora, mas tem o mesmo erro)>>https://support.office.com/en-us/article/Fix-issues-with-printers-scanners-and-LOB-applications-that-send-email-using-Office-365-c75542a8-c792-42c0-a8c5-291df987512d

Error: Client was not authenticated to send anonymous mail during MAIL FROM
This error indicates that your printer connects to the SMTP client submission endpoint (smtp.office365.com). However, your printer must also logon to a mailbox to send a message. This error occurs when you have not entered mailbox logon credentials in the printer’s settings. If there is no option to enter credentials, this printer does not support SMTP client submission; use either direct send or Office 365 SMTP relay instead. See How to set up a multifunction device or application to send email using Office 365.

pode estar faltando o email correto de envio (FROM) e a senha correta (PASSWORD)

Coloque aqui o codigo de envio que estas usando

Olá Willian!

Já acessei estas duas URL’s que você me mandou e não consegui resolver.

O código é o seguinte:

1 - Eu utilizo uma função chamada enviar_email que paga as configurações que eu busco na base de dados:

//Busca as configurações da base
$smtp = config_smtp(
{rs_config_email[0][0]}, //Servidor SMTP
{rs_config_email[0][1]}, //Porta do servidor
{rs_config_email[0][2]}, //Usuário
{rs_config_email[0][3]}, //Senha
{rs_config_email[0][4]} //Criptografia (SSL/TLS)
);

//Enviando e-mail
enviar_email(
array({rs_config_email[0][2]} => $loja[‘ds_nome_fantasia’]), //E-mail de Envio e Nome Fantasia
$email_cliente[0][0],
$assunto,
$template,
$smtp
);

/* FUNÇÃO DE ENVIO DE E-MAIL*/
function enviar_email($de, $para, $assunto, $mensagem, Swift_SmtpTransport $config){
/**
* Envia um email usando um objeto da classe Swift_Mailer
*/

include_once($this->Ini->path_third.'/swift/swift_required.php');

try{
	//Criando a mensagem do email, por padrão a mensagem será do tipo HTML	
	$Email_Message = mensagem_email($de, $para, $assunto, $mensagem);
	
	//Enviando a mensagem com as configurações do SMTP
	$Email_Mailer = Swift_Mailer::newInstance($config);
	
	//$Logger é um plugin para debugar o envio de email
	//$Logger = new Swift_Plugins_Loggers_ArrayLogger();
	//$Email_Mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($Logger));

	$Email_Mailer->send($Email_Message);
	
	//echo "<pre>".$Logger->dump()."/<pre>";
} catch(Swift_TransportException $ex) {
	echo $ex->getMessage();
} catch (Swift_Message_MimeException $Error) {
 	echo $ex->getMessage();
} catch(Exception $ex) {
	echo $ex->getMessage();
}

}

É isso!

Desculpa. Faltou eu dizer que estou utilizando a porta 587.
Usuário e Senha estão corretos, pois tenho um código de verificação que mostra quando conecta ou não.
Está conectando, só dá erro na hora do envio.

Bom, tentei uma outra alternativa que é pelo PHPMailer, mas acho que estou esquecendo algo pois a mensagem que me retorna é a seguinte:

Fatal error: Class name must be a valid object or a string in…

O código:

// Inicia a classe PHPMailer
[i]$mail = new PHPMailer();

// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP

try {
$mail->Host = ‘$servidor’; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
$mail->SMTPAuth = true; // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
$mail->SMTPSecure = “tls”; //Tipo de segurança
$mail->Port = $porta; // Usar 587 porta SMTP
$mail->Username = ‘$usuario’; // Usuário do servidor SMTP (endereço de email)
$mail->Password = ‘$senha’; // Senha do servidor SMTP (senha do email usado)

 //Define o remetente
 // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
 $mail->SetFrom('$usuario', 'INFO'); //Seu e-mail
 $mail->AddReplyTo('$usuario', 'INFO'); //Seu e-mail
 $mail->Subject = '$assunto';//Assunto do e-mail

 //Define os destinatário(s)
 //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 $mail->AddAddress('$cliente', '');

 //Define o corpo do email
 $mail->MsgHTML('$template'); 

 $mail->Send();

//caso apresente algum erro é apresentado abaixo com essa exceção.
}catch (phpmailerException $e) {
  echo $e->errorMessage(); //Mensagem de erro costumizada do PHPMailer

}[/i]

Estás usando Scriptcase? Se sim, tentaste usar a macro sc_send_mail?

Sim. Também dá erro.

Quando utilizo a macro sc_mail_send:

Macro:
sc_mail_send($servidor, $usuario, $senha, $usuario, $cliente, $assunto, $template, ‘H’, ‘’, ‘’, $porta, ‘S’, ‘’);

Erro:

Fatal error: Uncaught exception ‘Swift_TransportException’ with message ‘Connection could not be established with host smtp.office365.com [ #0]’ in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\swift\classes\Swift\Transport\StreamBuffer.php:265 Stack trace: #0 C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\swift\classes\Swift\Transport\StreamBuffer.php(66): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\swift\classes\Swift\Transport\AbstractSmtpTransport.php(117): Swift_Transport_StreamBuffer->initialize(Array) #2 C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\swift\classes\Swift\Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() #3 C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\app\E_Commerce_SPC_Brasil\ctr_Altera_Status\ctr_Altera_Status_apl.php(2281): Swift_Mailer->send(Object(Swift_Message), Array) #4 C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\app\E_Commer in C:\Program Files (x86)\NetMake\v71\wwwroot\scriptcase\prod\third\swift\classes\Swift\Transport\StreamBuffer.php on line 265

Bom, o erro aponta para não ser possível conectar com o host smtp.office365.com o que pode indicar que esse host não recebe conexões deste tipo ou está faltando alguma opção ser habilitada para funcionar. E pelo visto vai dar erro com qualquer das classes.

Ok pessoal, muito obrigado pela ajuda.
Consegui resolver com o PHPMailer:

[i]// Inicia a classe PHPMailer
$mail = new PHPMailer;

// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP

try {
$mail->Host = $servidor; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
$mail->SMTPAuth = true; // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
$mail->SMTPSecure = ‘tls’; //Tipo de segurança
$mail->Port = $porta; // Usar 587 porta SMTP
$mail->Username = $usuario; // Usuário do servidor SMTP (endereço de email)
$mail->Password = $senha; // Senha do servidor SMTP (senha do email usado)

//Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=    
$mail->SetFrom($usuario, 'INFO'); //Seu e-mail
$mail->AddReplyTo($usuario, 'INFO'); //Seu e-mail
$mail->Subject = $assunto;//Assunto do e-mail

//Define os destinatário(s)
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->AddAddress($cliente, '');


//Define o corpo do email
$mail->isHTML(true);
$mail->MsgHTML('$template'); 

$mail->Send();

//caso apresente algum erro é apresentado abaixo com essa exceção.

}catch (phpmailerException $e) {
echo $e->errorMessage(); //Mensagem de erro costumizada do PHPMailer
}[/i]