Skip to content
Advertisement

Change Message-ID PHPMailer

Hello I am making a php based mailing application that will connect with a external smtp server and send emails. Now I have managed to match everything but the Message-ID’s @domain-name and Sender domain name are not matching…

This is the result I am getting : Wrong Message ID Header

and this is the result I should be getting (this email is sent from Mailwizz connected with the same SMTP server I am trying to connect with my application)

Expected Message ID Header

send.php file which I am using to connect with SMTP using PHPMailer

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';

$mail = new PHPMailer;

$mail->isSMTP();
$mail->Host = 'smtp*****************';
$mail->SMTPAuth = true;
$mail->Username = 'notify@send.al***********';
$mail->Password = '**********';
$mail->SMTPSecure = 'tls';
$mail->Port = 80;

$mail->SetFrom('jon@al***********','John Adams');
$mail->Sender = 'notify@send.al*********';
$mail->addAddress('*********@gmail.com');
$mail->Subject = 'Hello This is a TEST FROM SMTP';
$mail->isHTML(false);
$mail->Body = 'Hello let me know when its received';
$mail->addCustomHeader('X-Sender', 'notify@send.al**********');
$mail->XMailer=null;
$mail->MessageID = md5('HELLO'.(idate("U")-1000000000).uniqid()).'-'.$type.'-'.$id.'@send.al*********';
if(!$mail->send()){
    echo 'Error is '.$mail->ErrorInfo;
}
else{
    echo 'Message has been sent!';
}
?>

Advertisement

Answer

In my experience, you do not need to use addCustomHeader if you want to set the MessageID.

Assuming that you want to set the Message ID to be [random]@send.alok, then please use the following:

$mail->MessageID = "<" . md5('HELLO'.(idate("U")-1000000000).uniqid()).'@send.alok>';

Hence, please the following will be ok:

<?php
use PHPMailerPHPMailerPHPMailer; 
use PHPMailerPHPMailerException; 

require './Exception.php'; 
require './PHPMailer.php'; 
require './SMTP.php'; 



$user='smtp_xxxxxx_user';
$pass='smtp_password';
$mail = new PHPMailer(true);                              

try { 

    $mail->CharSet ="UTF-8";       
    $mail->SMTPDebug = 0;                      
    $mail->isSMTP();                             
    $mail->Host = 'smtp.xxxxx.com';        

    $mail->Username = $user;               
    $mail->Password = $pass;             


$mail->MessageID = "<" . md5('HELLO'.(idate("U")-1000000000).uniqid()).'@send.alok>';


  $mail->setFrom('jon@alxxxx.com', 'Jon Al');  
  $mail->addAddress('jon@gmail.com');  

$subject="test";
$message="test123";

    $mail->Port = 25;                             
    $mail->isHTML(true);                                  
    $mail->Subject = $subject;
    $mail->Body    = $message;
    $mail->send(); 
//    echo 'Success'; 
} catch (Exception $e) { 
//echo 'Failed'; 
}

?>

You may refer to the screen dump below for the result

Email received

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement