Bu bir süre için benim radar üzerinde olmuştur ve her yerde internet üzerinde bu thread orijinal soruya kesin bir yanıt bulamadı biridir. Ben şimdi DKIM PHP / Armut ile SMTP e-imzalı göndererek uygulamak mümkün olmuştur. Aşağıda gerekli adımlardır.
I http://www.ra726.net/blog/2010/07/20/sending-email-to-gmail-from-php-without-being-marked-as-spam/ (sen http://www.ra726.net/php-dkim.zip üzerinden indirebilirsiniz) gelen DKIM değiştirilmiş bir sürümü bulundu. Zaten DKIM uygulanan ve sadece SMP posta ile çalışması için gereken varsa o zaman bu ihtiyaç duyduğunuz tüm blog dediği gibi, hafif bir dizi olarak aktarılır başlıklarını ele değiştirilmiş, dkim.php dosyadır. Benim kod, ben bunu dkimNEW.php adında var.
Bunu imzaladıktan sonra MTA mesajı değiştirmek değildir böylece en başlıklarını eklemek emin olun. Benim sınırlı araştırmada, en fazla katma başlıklar böylece benim başlık dizi bu gibi görünüyor, Tarih ve Message-ID başlıkları şunlardır: Not: Ben uygun bir html e-posta, değişim göndermek için kullanılan bu! Ayrıca, Message-ID son parçası olarak etki alanını eklemek
$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
Daha sonra e-posta giriş VE başlıkları diziye imza eklemek, aka için yukarıda belirtilen değiştirilmiş dkim.php kullanmak alacak
require 'dkimNEW.php';
$dkim = AddDKIM($headers, $subject, $body);
$headers['DKIM-Signature'] = $dkim;
Kodun geri kalanı PHP / Armut ile SMTP üzerinden e-posta göndermek için normal bir koddur. Tam çalışma kodu:
<?php
require_once 'Mail.php';
require_once 'Mail/mime.php';
// set all of the parameters
$subject = 'Test of DKIM';
$from = 'My Name <myname@mydomain.com>';
$to = 'First Recipient <recipient1@domain.com>';
$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('recipient1@domain.com', 'recipient2@domain.com');
$mail = $smtp->send($recipients, $headers, $body);
?>
PS. Eğer fark etmedi sadece durumda, kendi ile değerlerini değiştirin!
Bu nedenle, tüm bu aslında konu başlıklarını ve vücut işaretinin ardından, size MTA tarafından e-posta eklenen tüm başlıklarını belirtmek sağlamak için DKIM SMTP e-posta (veya gerçekten PHP mail) ile çalışma yapmak için zamana ihtiyaç olduğu Sonunda mesajı ve başlığı ile imzalandığı kısmını içerir.