PHP mail() с отправкой вложения из IIS прикрепляет файл как .bin?

#php #email #iis

#php #Адрес электронной почты #iis

Вопрос:

Этот скрипт работает на моем linux-сервере, но не на моем сервере IIS. Почта отправляется, но содержимое сообщения пустое, и вложение оказывается .bin файлом.

 // Function to attach a file to an email
function mail_attachment($to, $subject, $message, $from, $file, $filename) {

  $content = chunk_split(base64_encode(file_get_contents($file))); 
  $uid = md5(uniqid(time())); 
  $header = "From: ".$from."rn"
      ."MIME-Version: 1.0rn"
      ."Content-Type: multipart/mixed; boundary="".$uid.""rnrn"
      ."This is a multi-part message in MIME format.rn" 
      ."--".$uid."rn"
      ."Content-type:text/html; charset=iso-8859-1rn"
      ."Content-Transfer-Encoding: 7bitrnrn"
      .str_replace("n.", "n..", $message)."rnrn"
      ."--".$uid."rn"
      ."Content-Type: application/octet-stream; name="".$filename.""rn"
      ."Content-Transfer-Encoding: base64rn"
      ."Content-Disposition: attachment; filename="".$filename.""rnrn"
      .$content."rnrn"
      ."--".$uid."--"; 
  return mail($to, $subject, "", $header);
}
  

И вот как он вызывается:

 mail_attachment($mailto, $subject, $message, 
                $from, $_FILES['attachment']['tmp_name'], 
                $_FILES['attachment']['name']);
  

Комментарии:

1. Использует PHPMailer или Swiftmailer для генерации MIME-сообщений. Они намного проще и менее хлопотны, чем создание собственных заголовков mime.

2. @Marc: К сожалению, это не вариант для меня.

3. Где происходит $file_size воспроизведение? Возможно, он объединяет все сообщения в один файл .bin, потому что он понятия не имеет (или не пытается) определить размер вложения.

4. @gigwatt: удалено, оно осталось от предыдущего теста.