यह वह है जो मेरे रडार पर थोड़ी देर के लिए रहा है और वेब पर कहीं भी इस धागे में मूल प्रश्न का एक निश्चित उत्तर नहीं मिला। अब मैं PHP/नाशपाती के साथ डीकेआईएम हस्ताक्षरित एसएमटीपी ईमेल भेजने को लागू करने में सक्षम हूं। नीचे आवश्यक कदम हैं।
मैं (आप http://www.ra726.net/php-dkim.zip के माध्यम से इसे डाउनलोड कर सकते हैं) http://www.ra726.net/blog/2010/07/20/sending-email-to-gmail-from-php-without-being-marked-as-spam/ से DKIM का एक संशोधित संस्करण पाया। यदि आपने पहले से ही डीकेआईएम लागू किया है और इसे एसएमपी मेल के साथ काम करने की ज़रूरत है तो आपको इसकी आवश्यकता है dkim.php फ़ाइल, जैसा कि ब्लॉग कहता है, सरणी को सरणी के रूप में पारित करने के लिए थोड़ा संशोधित किया जाता है। मेरे कोड में, मैंने इसे dkimNEW.php नाम दिया है।
सुनिश्चित करें कि आप अधिकतर शीर्षलेख शामिल करते हैं ताकि एमटीए इस पर हस्ताक्षर करने के बाद संदेश को संशोधित न करे। मेरे सीमित शोध में, सबसे अधिक जोड़ा गया शीर्षलेख दिनांक और संदेश-आईडी शीर्षलेख हैं, इस प्रकार मेरा हेडर सरणी इस तरह दिखता है: नोट: मैंने इसे HTML ईमेल भेजने के लिए उपयोग किया, सूट में बदलाव किया! इसके अलावा, संदेश- 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
फिर आप उर्फ
अपने ईमेल पर हस्ताक्षर और हेडर सरणी के लिए हस्ताक्षर जोड़ने के लिए, जैसा कि ऊपर उल्लेख संशोधित dkim.php उपयोग करने के लिए मिल जाएगा require 'dkimNEW.php';
$dkim = AddDKIM($headers, $subject, $body);
$headers['DKIM-Signature'] = $dkim;
कोड के बाकी PHP/नाशपाती के साथ SMTP के माध्यम से ईमेल भेजने के लिए सामान्य कोड है। पूर्ण काम कर कोड है:
<?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);
?>
पी एस। बस अगर आपने नोटिस नहीं किया है, तो अपने आप के साथ मूल्यों को प्रतिस्थापित करें!
इसलिए, डीकेआईएम को एसएमटीपी ईमेल (या वास्तव में PHP मेल) के साथ काम करने के लिए अनिवार्य रूप से आवश्यक सभी चीजों को यह सुनिश्चित करना है कि आप अपने एमटीए द्वारा अपने ईमेल में जोड़े गए सभी शीर्षलेख निर्दिष्ट करें, फिर हेडर पर हस्ताक्षर करें, संदेश का विषय और निकाय, और अंततः आपके शीर्षलेख के साथ हस्ताक्षरित भाग शामिल करें।
वोट \t यहाँ नीचे उदाहरण कार्यों है कैसे DKIM और php मेल() फ़ंक्शन के साथ ईमेल भेजने के लिए: https://github.com/breakermind/PHP-DKIM –