ما هو الخطأ في نص رأس البريد هذا؟
-
20-09-2019 - |
سؤال
يتم إرسال رأس $ التالي عبر PHP's mail($to,$subject,$content,$header)
يأمر. يصل البريد ويبدو أن لديه مرفق. لكن نص البريد فارغ كما هو الملف. أعتقد أن هذا له علاقة بتباعد الخط ولكن لا يمكنني رؤية المشكلة. لقد حاولت وضع المحتويات (بين الحدود) في $contents
بدلا من إلحاقها $header
. لا يحدث فرقًا. أي أفكار؟
From: dnagirl@someplace.com
Reply-To: dnagirl@someplace.com
X-Mailer: PHP 5.3.1
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="7425195ade9d89bc7492cf520bf9f33a"
--7425195ade9d89bc7492cf520bf9f33a
Content-type:text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
this is a test message.
--7425195ade9d89bc7492cf520bf9f33a
Content-Type: application/pdf; name="test.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.pdf"
JVBERi0xLjMKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29k
ZT4+CnN0cmVhbQp4nE2PT0vEMBDFadVdO4p/v8AcUyFjMmma5CqIIF5cctt6WnFBqLD1+4Np1nY3
c3lvfm+GyQ4VaUY11iQ2PTyuHG5/Ibdx9fIvhi3swJMZX24c602PTzENegwUbNAO4xcoCsG5xuWE
.
... the rest of the file
.
MDAwMDA2MDYgMDAwMDAgbiAKMDAwMDAwMDcwNyAwMDAwMCBuIAowMDAwMDAxMDY4IDAwMDAwIG4g
CjAwMDAwMDA2NDcgMDAwMDAgbiAKMDAwMDAwMDY3NyAwMDAwMCBuIAowMDAwMDAxMjg2IDAwMDAw
IG4gCjAwMDAwMDA5MzIgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxNCAvUm9vdCAxIDAgUiAv
SW5mbyAyIDAgUgovSUQgWzxEMURDN0E2OUUzN0QzNjI1MDUyMEFFMjU0MTMxNTQwQz48RDFEQzdB
NjlFMzdEMzYyNTA1MjBBRTI1NDEzMTU0MEM+XQo+PgpzdGFydHhyZWYKNDY5MwolJUVPRgo=
--7425195ade9d89bc7492cf520bf9f33a--
$header
ينتهي بدون كسر خط
المحلول
يمكنني استخدام الرمز أدناه لإرسال رسالة مع مرفق وكذلك أجزاء HTML و Mission. أتذكر القتال معها لفترة طويلة للحصول على ذلك بشكل صحيح ، لكن لسوء الحظ لا أتذكر الأجزاء التي كانت مشاكلي. ربما سوف يساعدك النظر إليها. لقد غيرت بعض المتغيرات غير ذات الصلة ونأمل أن أسهل القراءة. لا تتردد في السؤال عما إذا كان هناك شيء غريب أو غير واضح وسأحاول شرحه.
public function sendEmail($htmlString)
{
$random_hash = md5(date('r', time()));
$message = "--mixed-$random_hash\n";
$message .= 'Content-Type: multipart/alternative; boundary="alt-' . $random_hash . '"' . "\n\n";
$message .= 'MIME-Version: 1.0' . "\n";
$message .= '--alt-' . $random_hash . "\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"' . "\n";
$message .= 'Content-Transfer-Encoding: 7bit' . "\n\n";
// text message
$message .= strip_tags($htmlString) . "\n\n";
$message .= '--alt-' . $random_hash . "\n";
$message .= 'Content-Type: text/html; charset="iso-8859-1"' . "\n";
$message .= 'Content-Transfer-Encoding: 7bit' . "\n\n";
// html message
$message .= $htmlString . "\n\n";
$message .= '--alt-' . $random_hash . '--' . "\n";
// graph image
if($this->selectedGraph != 0)
{
$graphString = $this->getGraph(); // image attachment
$graphString = chunk_split(base64_encode($graphString));
$linkID = 'graph-' . $userInfo['FirmID'] . $random_hash . '-image';
$message .= '--mixed-' . $random_hash . "\n";
$message .= 'MIME-Version: 1.0' . "\n";
$message .= 'Content-Transfer-Encoding: base64' . "\n";
$message .= 'Content-ID: ' . $linkID . "\n";
$message .= 'Content-Type: image/gif; name="graph.gif"' . "\n";
$message .= 'Content-Disposition: attachment' . "\n\n";
$message .= $graphString;
$message .= '--mixed-' . $random_hash . '--' . "\n";
}
else
{
$message .= '--mixed-' . $random_hash . '--' . "\n";
}
$headers = 'From: ' . $this->from. "\r\nReply-To: " . $this->replyto;
$headers .= "\r\nContent-Type: multipart/related; boundary=\"mixed-" . $random_hash . "\"\r\nMIME-Version: 1.0";
$flags = '-f ' . BOUNCED_EMAIL_ADDRESS;
return mail($userInfo['Email'], $this->subject, $message, $headers, $flags);
}
نصائح أخرى
These things happen when building mime mails from scratch. There are a couple of php modules you can use to generate cool and compatible mime messages. Mail_Mime should do the trick.