Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHPMailer .Exception:SendAsDeniedException.MapiExceptionSendAsDenied

I have installed PHPMailer on my website. But, I can't get it to work the way it should. When I send an email through the website, I get the following error:

08:12:53    CLIENT -> SERVER: RCPT TO: 2016-10-13 08:12:53
CLIENT -> SERVER: DATA 2016-10-13 08:12:53  
CLIENT -> SERVER: Date: Thu, 13 Oct 2016 08:12:51 +0000 2016-10-13 08:12:53
CLIENT -> SERVER: To: Kevin Kloet 2016-10-13 08:12:53   
CLIENT -> SERVER: From: Name <[email protected]> 2016-10-13 08:12:53
CLIENT -> SERVER: Reply-To: Name <[email protected]> 2016-10-13 08:12:53    
CLIENT -> SERVER: Subject: Subject 2016-10-13 08:12:53  
CLIENT -> SERVER: Message-ID: 2016-10-13 08:12:53   
CLIENT -> SERVER: X-Mailer: PHPMailer5.2.15 (https://github.com/PHPMailer/PHPMailer) 2016-10-13 08:12:53    
CLIENT -> SERVER: MIME-Version: 1.0 2016-10-13 08:12:53 
CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8 2016-10-13 08:12:53   
CLIENT -> SERVER: 2016-10-13 08:12:53   
CLIENT -> SERVER: Name: Name 2016-10-13 08:12:53    
CLIENT -> SERVER: Email: [email protected] 2016-10-13 08:12:53  
CLIENT -> SERVER: Subject: Subject 2016-10-13 08:12:53  
CLIENT -> SERVER: Message: message 2016-10-13 08:12:53  
CLIENT -> SERVER: 2016-10-13 08:12:53   
CLIENT -> SERVER: . 2016-10-13 08:12:57 
SMTP ERROR: DATA END command failed: 550 5.3.4 554-554 5.2.0 
STOREDRV.Deliver; delivery result banner 2016-10-13 08:12:57    
--------> SMTP Error: data not accepted. Message was not sent.Mailer error: <--------
--------> SMTP Error: data not accepted.SMTP server error: <--------
DATA END command failed Detail: 554-554 5.2.0 
STOREDRV.Deliver; delivery result banner SMTP code: 550 Additional SMTP
info: 5.3.4echo2016-10-13 08:12:57  
CLIENT -> SERVER: QUIT 2016-10-13 08:12:57  
SMTP ERROR: QUIT command failed: 554-554 5.2.0
STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied;
Failed to process message due to a permanent exception with message Cannot
submit message. 16.55847:6900000

I put arrows where the actual error is. When I try to send an email using the same email as the receiving email, everything works the way I want it to. That's why I don't get it why it does this?

Here is the code that is used to send the email:

require("PHPMailerAutoload.php");

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Mailer = "smtp";
$mail->CharSet = 'UTF-8';
$mail->Host = 'tls://smtp-mail.outlook.com';
$mail->Port = "587"; // 8025, 587 and 25 can also be used. Use Port 465 for SSL.
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = "username";
$mail->Password = "password";
$mail->From = trim_input($_POST['Email']);
$mail->FromName = trim_input($_POST['Name']);
$mail->AddAddress("[email protected]", "my name");
$mail->AddReplyTo(trim_input($_POST['Email']), trim_input($_POST['Name']));
$mail->SMTPDebug = 1;
$mail->Subject = trim_input($_POST['Subject']);
$mail->Body = trim_input($_POST['message']);
$mail->WordWrap = 50;

if (!$mail->Send()) {
    echo 'Message was not sent.';
    echo 'Mailer error: ' . $mail->ErrorInfo;
    exit;
} else {
    echo 'Message has been sent.';
}

The php_openssl extension is enabled. I am using actual email addresses so it's not the case of using fake email addresses like [email protected].

My html:

<!-- modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times</button>
        <h4 class="modal-title">Bericht sturen</h4>
      </div>
      <form method="POST" action="" >
      <div class="modal-body">
          <label for="messageName">Uw naam: </label>
          <input type="text" id="messageName" name="Name" />
          <label for="messageEmailAdress">Uw Emailadres: </label>
          <input type="text" id="messageEmailAdress" name="Email" />
          <label for="messageSubject">Onderwerp van uw bericht: </label>
          <input type="text" id="messageSubject" name="Subject" />
          <label for="message">bericht:  </label>
          <textarea id="message" rows="4" cols="50" name="Message"></textarea>
          <input type="hidden" name="totalMessage" />
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Sluiten</button>
        <input type="submit" name="Submit" class="btn btn-primary" value="Stuur bericht" />
      </div>
      </form>
    </div>
  </div>
</div>

and the javascript for the totalMessage:

jQuery(document).ready(function () {
var form = document.getElementsByTagName('form')[0];
if (form) {
    form.addEventListener('submit', contact, false);
}
function contact(e) {
    // Prevent Default Form Submission
    e.preventDefault();

    var target = e.target || e.srcElement;
    var i = 0;
    var message = '';

    // Loop Through All Input Fields
    for (i = 0; i < target.length; ++i) {
        // Check to make sure it's a value. Don't need to include Buttons
        if (target[i].type != 'text' && target[i].type != 'textarea') {
            // Skip to next input since this one doesn't match our rules
            continue;
        }

        // Add Input Name and value followed by a line break
        message += target[i].name + ': ' + target[i].value + "\r\n";
    }

    target.elements["totalMessage"].value = message;
    this.submit();
    }
  }
);

What am I doing wrong here or what is the problem? Why I get the error message?

edit:

debug level 2 error:

2016-10-13 10:13:42    SERVER -> CLIENT: 220 BLU436-SMTP224.smtp.hotmail.com Microsoft ESMTP MAIL Service, Version: 8.0.9200.16384 ready at Thu, 13 Oct 2016 03:13:39 -0700
2016-10-13 10:13:42    CLIENT -> SERVER: EHLO localhost
2016-10-13 10:13:42    SERVER -> CLIENT: 250-BLU436-SMTP224.smtp.hotmail.com Hello [82.176.119.145] 250-TURN 250-SIZE 41943040 250-ETRN 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-8bitmime 250-BINARYMIME 250-CHUNKING 250-VRFY 250-TLS 250-STARTTLS 250 OK
2016-10-13 10:13:42    CLIENT -> SERVER: STARTTLS
2016-10-13 10:13:42    SERVER -> CLIENT: 220 2.0.0 SMTP server ready
2016-10-13 10:13:42    CLIENT -> SERVER: EHLO localhost
2016-10-13 10:13:42    SERVER -> CLIENT: 250-BLU436-SMTP224.smtp.hotmail.com Hello [82.176.119.145] 250-TURN 250-SIZE 41943040 250-ETRN 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-8bitmime 250-BINARYMIME 250-CHUNKING 250-VRFY 250-AUTH LOGIN PLAIN XOAUTH2 250 OK
2016-10-13 10:13:42    CLIENT -> SERVER: AUTH LOGIN
2016-10-13 10:13:42    SERVER -> CLIENT: 334 VXNlcm5hbWU6
2016-10-13 10:13:42    CLIENT -> SERVER: xxx==
2016-10-13 10:13:42    SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2016-10-13 10:13:42    CLIENT -> SERVER: xxx
2016-10-13 10:13:43    SERVER -> CLIENT: 235 2.7.0 Authentication succeeded
2016-10-13 10:13:43    CLIENT -> SERVER: MAIL FROM:
2016-10-13 10:13:43    SERVER -> CLIENT: 250 2.1.0 [email protected] OK
2016-10-13 10:13:43    CLIENT -> SERVER: RCPT TO:
2016-10-13 10:13:43    SERVER -> CLIENT: 250 2.1.5 [email protected]
2016-10-13 10:13:43    CLIENT -> SERVER: DATA
2016-10-13 10:13:43    SERVER -> CLIENT: 354 Start mail input; end with .
2016-10-13 10:13:43    CLIENT -> SERVER: Date: Thu, 13 Oct 2016 10:13:41 +0000
2016-10-13 10:13:43    CLIENT -> SERVER: To: Kevin Kloet
2016-10-13 10:13:43    CLIENT -> SERVER: From: this is my name
2016-10-13 10:13:43    CLIENT -> SERVER: Reply-To: this is my name
2016-10-13 10:13:43    CLIENT -> SERVER: Subject: subject
2016-10-13 10:13:43    CLIENT -> SERVER: Message-ID: <3e21fa1900a9d30d3d51187e7719add6@localhost>
2016-10-13 10:13:43    CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer)
2016-10-13 10:13:43    CLIENT -> SERVER: MIME-Version: 1.0
2016-10-13 10:13:43    CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8
2016-10-13 10:13:43    CLIENT -> SERVER:
2016-10-13 10:13:43    CLIENT -> SERVER: Name: this is my name
2016-10-13 10:13:43    CLIENT -> SERVER: Email: [email protected]
2016-10-13 10:13:43    CLIENT -> SERVER: Subject: subject
2016-10-13 10:13:43    CLIENT -> SERVER: Message: this is the message
2016-10-13 10:13:43    CLIENT -> SERVER:
2016-10-13 10:13:43    CLIENT -> SERVER: .
2016-10-13 10:13:49    SERVER -> CLIENT: 550 5.3.4 554-554 5.2.0 STOREDRV.Deliver; delivery result banner
2016-10-13 10:13:49    SMTP ERROR: DATA END command failed: 550 5.3.4 554-554 5.2.0 STOREDRV.Deliver; delivery result banner
2016-10-13 10:13:49    SMTP Error: data not accepted. Message was not sent.Mailer error: 
    SMTP Error: data not accepted.
    SMTP server error: DATA END command failed Detail: 554-554 5.2.0
    STOREDRV.Deliver; delivery result banner 
    SMTP code: 550 Additional 
    SMTP info: 5.3.4echo
2016-10-13 10:13:49    CLIENT -> SERVER: QUIT
2016-10-13 10:13:49    SERVER -> CLIENT: 554-554 5.2.0
    STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 16.55847:6900000 2016-10-13 10:13:49  
    SMTP ERROR: QUIT command failed: 554-554 5.2.0
    STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied; Failed to process message due to a permanent exception with message Cannot submit message. 16.55847:6900000

edit 2:

the trim_input function if you need to know what it does:

function trim_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
like image 381
Kevin Kloet Avatar asked Oct 13 '16 08:10

Kevin Kloet


People also ask

How do I fix SMTP error not accepted?

The user may need to ensure that the "From" email address matches the SMTP username to resolve this issue. The default parameters may not force this setting; in these cases, the user may need to add the required configuration to force the email address to match the SMTP user name.

Can I use PHPMailer in localhost?

The PHPMailer library provides the easiest way to send an email from localhost with an SMTP server using PHP. Not only the text email, but you can also send HTML email from localhost in PHP using PHPMailer.


2 Answers

I'd guess that the culprit is this:

$mail->FromName = trim_input($_POST['Name']);

What you're doing here is asking outlook to forge the from address by using arbitrary user input. This is generally a bad idea. The error message name suggests that this is where the problem is too: SendAsDeniedException, i.e. it doesn't like who you're sending as.

Try this instead:

$mail->From = trim_input("[email protected]");
$mail->FromName = trim_input($_POST['Name']);
$mail->AddAddress("[email protected]", "my name");
$mail->AddReplyTo(trim_input($_POST['Email']), trim_input($_POST['Name']));

This is: put your own address as the from address (so you're not forging anything), and use the submitter's address as a reply to, and also use their name alongside the from address.

This problem is covered in the PHPMailer troubleshooting guide.

like image 89
Synchro Avatar answered Sep 17 '22 21:09

Synchro


This error can also mean another thing as it did for me. So make sure also if the $mail->From address is the same as the address you're using to authorize because otherwise you'll see this error:

554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied;
Failed to process message due to a permanent exception with message Cannot submit message.
like image 31
Picard Avatar answered Sep 21 '22 21:09

Picard