Wednesday, February 21, 2018

How to resolve DMARC and DKIM pass in mailer header in php

Hey    , Guy

I am sharing my experienced which I faced lot of effort to resolve the DKIM and DMARC fail issue on email sent.

Finally I resolved the issue using changing the header below and validate the html tag in your email body.


Here is the result of pass by google and test mailer

SPF:PASS with IP 203.85.210.401 Learn more
DKIM:'PASS' with domain gmail.com Learn more
DMARC:'PASS' 

function sendNewsLetter($id='', $to_name='', $to_address=''){

    $from_name    = 'Phptechnicalgroups';
    $from_address = 'contact@phptechnicalgroups.com';
    $reply_address = 'no-reply@phptechnicalgroups.com';
//hiddenUrl variable call when user read the email to identify
 $hiddenUrl      = 'http://phptechnicalgroups.blogspot.in/captcha.php?type=mailer_socialhub_february_2018&id='.$id;

$maildescription ='<html>
<head>

</head>

<body style="margin: 0; padding: 0;">
    <div style="display: none;">
        <img alt="" src="'.$hiddenUrl.'" width="0px" height="0px">
    </div>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Phptechnicalgroup - Social Hub Updates - January 2018</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
</body>
</html>';
       $subject  = "Email Subject";
    $mime_boundary = "----php technical group----".MD5(TIME().$id.TIME());
    $additional ='webmaster@phptechnicalgroups.blogspot.in';
    $messageid = $_SERVER['REQUEST_TIME'] . md5($_SERVER['REQUEST_TIME']) .$id. '@' . $_SERVER['SERVER_NAME'];
    $headers  = "MIME-Version: 1.0" . "\r\n";
    $headers .= 'Return-Path: Intel Network Builders <no-reply@phptechnicalgroups.blogspot.in>'."\r\n";
    $headers .= 'X-Mailer: PHP v'.phpversion()."\r\n";
    $headers .= 'Message-ID:<'.$messageid.'>'."\r\n";
    $headers .= 'X-Originating-IP:'.$_SERVER['SERVER_ADDR']."\r\n";
    $headers .= 'List-Unsubscribe: <mailto:contact@phptechnicalgroups.blogspot.in>'."\r\n";
    $headers .= 'From: php technical group <contact@phptechnicalgroups.blogspot.in>' . "\r\n";
    $headers .= 'Bcc:  <nayakr.bikash@gmail.com>' . "\r\n";
    $headers .= 'Reply-To: php technical group <no-reply@phptechnicalgroups.blogspot.in>' . "\r\n";
    $headers .= "Content-Type: multipart/mixed; boundary=\"$mime_boundary\"\r\n";

//Create Email Body (HTML)
    $message = "--$mime_boundary\n";
    $message .= "Content-Type: text/html; charset=UTF-8\n";
    $message .= "Content-Transfer-Encoding: 8bit\n\n";
    $message .= "<html>\n";
    $message .= "<body>\n";
    $message .= $maildescription;
    $message .= "</body>\n";
    $message .= "</html>\n";
    $message .= "--$mime_boundary\n";
    
    $mailsent = mail($to_address, $subject, $message, $headers,'-f'.$additional);
    return ($mailsent)?(true):(false);
  }

Hopefully it will help you , thank you!

No comments:

Post a Comment