Почему не коректно приходит вложенный файл на почту через php?

Помогаите плиз
используя классы SendMailSmtpClass или PHPMailer
письма получаю с кракозябрами
файл не прикрепляется
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
require_once "SendMailSmtpClass/SendMailSmtpClass.php"; // подключаем класс
$mailSMTP = new SendMailSmtpClass('****@mail.ru', '****', 'ssl://smtp.mail.ru', 465, "UTF-8");
// $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'порт', 'кодировка письма');

// от кого
$from = array(
    "Артур", // Имя отправителя
    "***@mail.ru", // почта отправителя
);
//Load Composer's autoloader
$to = "***@mail.ru";
// емайл получателя
$subject = "Письмо с вложением";
// тема письма

$message = "Здравствуйте
Если с этим письмом вы получили прикрепленный файл значит все ок
Почтовый робот ";
// текст сообщения

$filename = "4078.xls";
// название файла

$filepath = "excel/$filename";
// месторасположение файла

// письмо с вложением состоит из нескольких частей, которые разделяются разделителем

$boundary = "--".md5(uniqid(time()));
// генерируем разделитель
$mailheaders = "MIME-Version: 1.0n";
$mailheaders .="Content-Type: multipart/mixed; boundary=\"$boundary\"n";
// разделитель указывается в заголовке в параметре boundary

$mailheaders .= "From: SiteRobot <noreply@siterobot.ru>rn";
$mailheaders .= "Reply-To: noreply@siterobot.rurn";


$multipart = "--$boundaryn";
$multipart .= "Content-Type: text/plain; charset=UTF-8nn";
$multipart .= "$message";

// первая часть само сообщение

$fp = fopen($filepath,"r");
if (!$fp)
{
print "Файл не может быть прочитан";
exit();
}

$file = fread($fp, filesize($filepath));
fclose($fp);

// чтение файла

$message_part = "--$boundaryn";
$message_part .= "Content-Type: application/octet-stream; name = ".$filename."n";
$message_part .= "Content-Transfer-Encoding: base64n";
$message_part .= "Content-Disposition: attachment; filename = ".$filename."nn";
$message_part .= chunk_split(base64_encode($file))."n";

// второй частью прикрепляем файл, можно прикрепить два и более файла
$multipart .= $message_part;

$result1 = $mailSMTP->send($to, $subject, $multipart, $from);
// отправляем письмо
 if($result1 === true){
    echo "Отправленно";
}else{
    echo "Не отправленно <br>$result1<br>";
}

в конце если отправлять таг
$mailSMTP->send($to, $subject, $multipart, $mailheaders );

то пишет E-mail didn't sent.
  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
alex-1917
@alex-1917
Если ответ помог, отметь решением
Забей на майл-ру, юзай яндекс!
Если не получится, пиши тут, выложу рабочий железобетонный код!
Пока что некогда, сорри, на улице жара, а в офисе холодно, а рабочий код хранится в гараже...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы