6 votes

PHPMailer .Exception:SendAsDeniedException.MapiExceptionSendAsDenied

J'ai installé PHPMailer sur mon site web. Mais je n'arrive pas à le faire fonctionner comme il le devrait. Lorsque j'envoie un courriel par l'intermédiaire du site Web, j'obtiens l'erreur suivante :

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 <myEmail@email.com> 2016-10-13 08:12:53
CLIENT -> SERVER: Reply-To: Name <myEmail@email.com> 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: myEmail@email.com 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

J'ai mis des flèches là où se trouve l'erreur réelle.

Lorsque j'essaie d'envoyer un e-mail en utilisant la même adresse que l'e-mail de réception, tout fonctionne comme je le souhaite. C'est pourquoi je ne comprends pas pourquoi il fait ça.

voici le code qui est utilisé pour envoyer l'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("receivingEmailAdress@outlook.com", "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.';
}

l'extension php_openssl est activée. J'utilise des adresses e-mail réelles, il ne s'agit donc pas d'utiliser de fausses adresses e-mail comme example@example.com.

mon 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>

et le javascript pour le 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();
    }
  }
);

Qu'est-ce que je fais mal ici ou quel est le problème pour lequel je reçois le message d'erreur ?

éditer :

erreur de débogage de niveau 2 :

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 mySendingEmailaddress@email.com....Sender OK
2016-10-13 10:13:43    CLIENT -> SERVER: RCPT TO:
2016-10-13 10:13:43    SERVER -> CLIENT: 250 2.1.5 myReceivingEmailaddress@email.com
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: mySendingEmail@email.com
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

modifier 2 :

la fonction trim_input si vous voulez savoir ce qu'elle fait :

function trim_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

10voto

Synchro Points 2539

Je pense que le coupable est le suivant :

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

Ce que vous faites ici, c'est demander à outlook de falsifier l'adresse "from" en utilisant une entrée utilisateur arbitraire. C'est généralement une mauvaise idée. Le nom du message d'erreur suggère que c'est également là que se situe le problème : SendAsDeniedException c'est-à-dire qu'il n'aime pas l'identité de l'expéditeur.

Essayez plutôt ceci :

$mail->From = trim_input("receivingEmailAdress@outlook.com");
$mail->FromName = trim_input($_POST['Name']);
$mail->AddAddress("receivingEmailAdress@outlook.com", "my name");
$mail->AddReplyTo(trim_input($_POST['Email']), trim_input($_POST['Name']));

Il s'agit de mettre votre propre adresse comme adresse de départ (pour ne pas falsifier quoi que ce soit), d'utiliser l'adresse de l'expéditeur comme adresse de réponse et d'utiliser son nom à côté de l'adresse de départ.

Ce problème est traité dans le guide de dépannage de PHPMailer .

1voto

Jeff Kremer Points 1

Office 365 exige les caractères "<" et ">" depuis le 1er septembre 2018.

Ce problème peut souvent être résolu en mettant à jour les paramètres de l'appareil ou de l'imprimante et en ajoutant des crochets ("<" et ">") autour de l'adresse de réponse ou de départ du courrier.

Voir Le soutien de Microsoft pour les détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X