Ceci est un qui a été sur mon radar pendant un moment et n'a pas pu trouver une réponse définitive à la question originale dans ce fil partout sur le web. J'ai maintenant été en mesure de mettre en œuvre l'envoi de courrier électronique SMTP signé DKIM avec PHP/Pear. Voici les étapes requises.
Je trouve une version modifiée du DKIM de http://www.ra726.net/blog/2010/07/20/sending-email-to-gmail-from-php-without-being-marked-as-spam/ (vous pouvez le télécharger via http://www.ra726.net/php-dkim.zip). Si vous avez déjà implémenté DKIM et que vous avez juste besoin de le faire avec du courrier SMP, tout ce dont vous avez besoin est le fichier dkim.php qui, comme le dit le blog, est légèrement modifié pour gérer les en-têtes passés en tableau. Dans mon code, je l'ai appelé dkimNEW.php.
Assurez-vous d'inclure la plupart des en-têtes afin que le MTA ne modifie pas le message après l'avoir signé. Dans ma recherche limitée, les en-têtes les plus ajoutés sont les en-têtes Date et Message-ID, ainsi mon tableau d'en-têtes ressemble à ceci: Note: J'ai utilisé ceci pour envoyer un email HTML, changer pour convenir! De plus, ajoutez votre domaine en tant que la dernière partie du message ID
$headers = array(
'Subject' => $subject,
'From' => $from,
'To' => $to,
'MIME-Version' => '1.0',
'Date' => date('r'),
'Message-ID' => '<'.sha1(microtime(true)).'@yourdomain.com>',
'Content-Type' => 'text/html',
'Content-Transfer-Encoding' => 'quoted-printable',
); // end $headers
Vous obtiendrez alors d'utiliser le dkim.php modifié mentionné ci-dessus pour signer votre e-mail et ajouter la signature au tableau d'en-têtes, alias
require 'dkimNEW.php';
$dkim = AddDKIM($headers, $subject, $body);
$headers['DKIM-Signature'] = $dkim;
le reste du code est le code normal d'envoyer des courriels via SMTP avec PHP/PEAR. Le code de fonctionnement complet est:
<?php
require_once 'Mail.php';
require_once 'Mail/mime.php';
// set all of the parameters
$subject = 'Test of DKIM';
$from = 'My Name <[email protected]>';
$to = 'First Recipient <[email protected]>';
$pbody ='<html><head></head><body><h1>Done! DKIM test</h1>Result, next?</body></html>';
$text = strip_tags($pbody);
// create the headers
$headers = array(
'Subject' => $subject,
'From' => $from,
'To' => $to,
'MIME-Version' => '1.0',
'Date' => date('r'),
'Message-ID' => '<'.sha1(microtime(true)).'@mydomain.com>',
'Content-Type' => 'text/html',
'Content-Transfer-Encoding' => 'quoted-printable',
); // end $headers
// create the message
$mime = new Mail_mime("\n");
$mime->setTXTBody($text);
$mime->setHTMLBody($pbody);
// always call these methods in this order
$body = $mime->get();
$headers = $mime->headers($headers);
require 'dkimNEW.php' ;
$dkim = AddDKIM($headers, $subject, $body);
$headers['DKIM-Signature'] = $dkim;
// create the smtp mail object
$smtp_params = array(
'host' => 'mail.mydomain.com',
'auth' => true,
'username' => 'myUserName',
'password' => 'myPassWord',
); // end $smtp_params
$smtp = Mail::factory('smtp', $smtp_params);
// send the message
$recipients = array('[email protected]', '[email protected]');
$mail = $smtp->send($recipients, $headers, $body);
?>
PS. Au cas où vous ne l'auriez pas remarqué, remplacez les valeurs par les vôtres! Par conséquent, tout ce qui est essentiel pour que DKIM fonctionne avec les emails SMTP (ou le courrier PHP) est de s'assurer que vous spécifiez tous les en-têtes ajoutés à votre email par votre MTA, puis de signer les en-têtes, sujet et le corps du message, et enfin inclure cette partie signée avec votre en-tête.
vers le bas vote \t Voici les fonctions par exemple comment envoyer des emails avec DKIM et php mail() Fonction: https://github.com/breakermind/PHP-DKIM –