Почтовый клиент не открывает вложение, но загружает и открывает - PullRequest
0 голосов
/ 21 февраля 2011

Я использую PHP для отправки вложения в электронное письмо, все работает как положено, за исключением почтового клиента (с другими почтовыми вложениями), я могу просто щелкнуть по нему, и он запустит внешнее приложение для просмотра файла, илипо крайней мере, дайте мне возможность выбрать программу, чтобы попробовать и просмотреть ее.Я не получаю это, так как ничего не происходит, когда я нажимаю на вложение.Я могу скачать его и посмотреть, и это работает, как ожидалось.

Хотел узнать, что я что-то упускаю в заголовке.

Вот моя функция (она в классе):

public function mail() {
    if(!empty($this->attachment)) {
        $filename   = empty($this->attachment_filename) ? basename($this->attachment) : $this->attachment_filename;
        $path       = dirname($this->attachment);
        $mailto     = $this->to;
        $from_mail  = $this->from;
        $from_name  = $this->from_name;
        $replyto    = $this->reply_to;
        $subject    = $this->subject;
        $message    = $this->message;

        $file       = $path.'/'.$filename;
        $file_size  = filesize($file);
        $handle     = fopen($file, "r");
        $content    = fread($handle, $file_size);
        fclose($handle);
        $content    = chunk_split(base64_encode($content));
        $uid        = md5(uniqid(time()));
        $name       = basename($file);

        $mime_type  = $this->getMimeType($file); // function returns the MIME type

        $header  = "From: ".$from_name." <".$from_mail.">\r\n";
        $header .= "Reply-To: ".$replyto."\r\n";
        $header .= "MIME-Version: 1.0\r\n";
        $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
        $header .= "This is a multi-part message in MIME format.\r\n";
        $header .= "--".$uid."\r\n";
        $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
        $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
        $header .= $message."\r\n\r\n";
        $header .= "--".$uid."\r\n";
        $header .= "Content-Type: ".$mime_type."; name=\"".$filename."\"\r\n";
        $header .= "Content-Transfer-Encoding: base64\r\n";
        $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
        $header .= $content."\r\n\r\n";
        $header .= "--".$uid."--";

        return (mail($mailto, $subject, "", $header) ? true : false);
    } else {
        $header  = "From: ".($this->from_name)." <".($this->from).">\r\n";
        $header .= "Reply-To: ".($this->reply_to)."\r\n";

        return (mail($this->to, $this->subject, $this->message, $header) ? true : false);
    }
}

Как я звонюэто (что работает и отправьте письмо с приложением, как ожидалось)

$sendit = new MailAttachment(
    $to, 
    $subject, 
    $message, 
    $excel_report,
    basename($excel_report)
);

if(!$sendit->mail()) {
    return 'Error';
}

1 Ответ

0 голосов
/ 22 февраля 2011

Ну, получается, все работает как положено.Проблема с почтовым клиентом заключается в расширении файла.

  • Файлы с расширением .xls открываются при двойном щелчке из почтового клиента,
  • Файл (и)) с расширением .xlsx не открываются при двойном щелчке из почтового клиента, его необходимо загрузить и открыть.

Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...