0

以下の関数を使用して、Drupal モジュールで添付ファイル付きのメールを送信します。送信docxまたはdocドキュメントは正常に送信されますが、電子メールで PDF を送信すると、PDF ファイルは元のファイルと同じサイズではなく、ドキュメントは開きません。なぜそれが起こるのか分かりません。誰でも私を助けることができますか?ありがとう。

<?php

 $file = "http://website.com/files/211546865_file.pdf";

 function mail_attachment($to, $subject, $message, $from, $file) {

  $filename = basename($file);
  $file_size = filesize($file);
  $content = chunk_split(base64_encode(file_get_contents($file))); 
  $uid = md5(uniqid(time()));
  $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection
  $header = "From: ".$from."\r\n"
  ."MIME-Version: 1.0\r\n"
  ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
  ."This is a multi-part message in MIME format.\r\n" 
  ."--".$uid."\r\n"
  ."Content-type:text/html; charset=ISO-8859-1\r\n"
  ."Content-Transfer-Encoding: 7bit\r\n\r\n"
  .$message."\r\n\r\n"
  ."--".$uid."\r\n"
  ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"
  ."Content-Transfer-Encoding: base64\r\n"
  ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
  .$content."\r\n\r\n"
  ."--".$uid."--"; 

  return mail($to, $subject, "", $header);
 }

?>
4

1 に答える 1

1

境界は次のようになります

Content-Type: multipart/alternative; boundary="--------A4D921C2D10D7DB"

意味 - 「-」文字が 2 つ少ない。メールの送信元を確認します。

一方、メールの終了境界は、おそらく次のようになります。

----------A4D921C2D10D7DB--

(繰り返しになりますが、メール メッセージのソースを参照してください。または、もちろん RFC を読んでください:))。

Swift MailerPHPMailerなどの既存のメーラー クラスを使用することをお勧めします。

もっとお手伝いできることがあれば教えてください。

于 2013-07-05T15:39:11.013 に答える