1

Whenever i try to send an E-mail (outlook SMTP) using: Phpmailer i get this error:

2020-06-05 18:45:05 Connection: opening to smtp.office365.com:587, timeout=300, options=array()
2020-06-05 18:45:05 Connection: opened
2020-06-05 18:45:05 SERVER -> CLIENT: 220 AM0PR10CA0059.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 5 Jun 2020 18:45:05 +0000
2020-06-05 18:45:05 SERVER -> CLIENT: 250-AM0PR10CA0059.outlook.office365.com Hello [82.165.86.40]250-SIZE 157286400250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-STARTTLS250-8BITMIME250-BINARYMIME250-CHUNKING250 SMTPUTF8
2020-06-05 18:45:05 CLIENT -> SERVER: STARTTLS
2020-06-05 18:45:05 SERVER -> CLIENT: 220 2.0.0 SMTP server ready
2020-06-05 18:45:05 SERVER -> CLIENT: 250-AM0PR10CA0059.outlook.office365.com Hello [82.165.86.40]250-SIZE 157286400250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-AUTH LOGIN XOAUTH2250-8BITMIME250-BINARYMIME250-CHUNKING250 SMTPUTF8
2020-06-05 18:45:05 CLIENT -> SERVER: AUTH LOGIN
2020-06-05 18:45:05 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2020-06-05 18:45:05 CLIENT -> SERVER: [credentials hidden]
2020-06-05 18:45:05 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2020-06-05 18:45:05 CLIENT -> SERVER: [credentials hidden]
2020-06-05 18:45:10 SERVER -> CLIENT: 535 5.7.3 Authentication unsuccessful [AM0PR10CA0059.EURPRD10.PROD.OUTLOOK.COM]
2020-06-05 18:45:10 SMTP ERROR: Password command failed: 535 5.7.3 Authentication unsuccessful [AM0PR10CA0059.EURPRD10.PROD.OUTLOOK.COM]
SMTP Error: Could not authenticate.
2020-06-05 18:45:10 CLIENT -> SERVER: QUIT
2020-06-05 18:45:10 SERVER -> CLIENT: 221 2.0.0 Service closing transmission channel
2020-06-05 18:45:10 Connection: closed
SMTP Error: Could not authenticate.

I tried with Codeigniter as well

Failed to authenticate password. Error:
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.

i tried both way but not working ...

i am using codeigniter default mail class

here is the config:

        $config = array(

            'smtp_crypto'  => 'tls', or 'startTls'
            'smtp_auth'  => true,
            'protocol'  => 'smtp',
            'smtp_host' => 'smtp.office365.com',
            'smtp_port' => 587,
            'smtp_timeout' => '7',
            'smtp_user' => 'email@account.com',
            'smtp_pass' => 'emailPassword', or 'APPPASSWORD'
            'mailtype'  => 'html',
            'charset'   => 'iso-8859-1',
            'wordwrap'  => TRUE,
            'validation'   => TRUE
        );

This is the Phpmailer Config:

$mail->isSMTP();
$mail->Host     = 'smtp.office365.com';
$mail->SMTPAuth = false;
$mail->Username = 'email@account.com';
$mail->Password = 'emailPassword'; or 'APPPASSWORD'
$mail->SMTPSecure = 'tls', or 'startTls',
$mail->Port     =  587

anybody faced with type of problem ? Looking for some help !!!

RiggsFolly
  • 83,545
  • 20
  • 96
  • 136
fahimarifen
  • 69
  • 2
  • 6

1 Answers1

2

I had some certificate issues and thats how I used it finally:

<?php
$mailusername= "******";
$mailpassword= "******";
$mailhost= "smtp.office365.com";
$to="*******";
$subject="test";
$body="abcdef";


require_once('PHPMailer-master/class.phpmailer.php');
require_once('PHPMailer-master/class.smtp.php');


$mail = new PHPMailer();


$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host       = $mailhost;
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;
$mail->Port       = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);
$mail->Username   = $mailusername;
$mail->Password   = $mailpassword;

$frommail = $mailusername;//$this->from;
$fromname = "Mailbot";
$mail->SetFrom($frommail, $fromname);


$address = $to;
$adrname = "";
$mail->AddAddress($address, $adrname);

$mail->Subject = $subject;
$mail->Body = $body;

if(!$mail->Send()) {
    //echo "Mailer Error: " . $mail->ErrorInfo;
    print( "sendViaSMTP() - failed to send email");
} else {
    print( "sendViaSMTP() - success sending email");
    // all good
}


?>

(1) For me the tricky part were the SMTPOptions().

(2) The other tricky part was to use the latest PHPMailer() lib. Because the SMTPOptions() is only supported by newer PHPMailer()

(3) Using the "no-verify" option is insecure. However on some servers needed due to setup / configuration issues.

updated my code

I am using PHPMailer

   public $Version = '5.2.8';
tswaehn
  • 367
  • 1
  • 11
  • No Luck... Same Error.... `2020-06-06 19:48:36 SERVER -> CLIENT: 535 5.7.3 Authentication unsuccessful [AM0PR04CA0034.eurprd04.prod.outlook.com]` – fahimarifen Jun 06 '20 at 19:49
  • you could try setting **$mail->SMTPSecure = "ssl";** – tswaehn Jun 06 '20 at 20:01
  • the updated example code should work. if not I suggest to test sending from any other email program using SMTP. because I guess your login data is incorrect or your account is not enabled to allow sending by external program. – tswaehn Jun 07 '20 at 10:35
  • i already fixed the problem .... i changed couple of thing in Office 365 Admin Console... but thanks for your help :) – fahimarifen Jun 09 '20 at 21:35
  • @fahimarifen I'm having the same issue trying to use office 365 as smtp server in CI, can you share what did you change in Office 365 Admin Console? Thanks – Frank Apr 15 '21 at 06:42