簡體   English   中英

PHP Pear Mime Mail出現附件問題

[英]PHP Pear Mime Mail with Attachment problem

我正在嘗試使用Pear發送帶有pdf附件的電子郵件。 電子郵件已發送,但似乎是以錯誤的格式發送的。 電子郵件似乎以文本格式顯示。 這是我收到的:

內容類型:多部分/替代;

boundary =“ = __ 5a78298c81e9b7e60dee1049b9239270”

-= _ 5a78298c81e9b7e60dee1049b9239270

內容傳輸編碼:帶引號的可打印

內容類型:文本/純文本; 字符集= ISO-8859-1

你好,世界

-= _ 5a78298c81e9b7e60dee1049b9239270

內容傳輸編碼:帶引號的可打印

內容類型:text / html; 字符集= ISO-8859-1

你好,世界

-= _ 5a78298c81e9b7e60dee1049b9239270--

內容傳輸編碼:base64

內容類型:應用程序/八位字節流;

名稱= phpk0AQHD

內容處置:附件;

文件名= phpk0AQHD

其次是大量隨機字符,我只能假定是文本格式的附件。 我嘗試將其發送到Gmail,Hotmail和使用Outlook的Microsoft Exchange地址,但得到的結果相同。

這是我的代碼:

<?php

include('../includes/Mail.php');
include('../includes/Mail/mime.php');

$newsletterName = $_POST['newsletterName'];
$newsletterDate = $_POST['newsletterDate'];

$_SESSION['newsletterName'] = $newsletterName;
$_SESSION['newsletterDate'] = $newsletterDate;

$uploadDir = "newsletters/";
$tempLocation = $_FILES['newsletter']['tmp_name'];
$newsletterPath = $uploadDir . str_replace(" ", "-", $_FILES['newsletter']['name']);
$newsletterFile = $_FILES['newsletter'];

if ($_FILES["newsletter"]["type"] == "application/pdf") 
{
    include '../includes/db-connection-wp.php';
    $query = "INSERT INTO newsletters (newsletter_title, newsletter_path, newsletter_date) VALUES ('" . mysql_real_escape_string($newsletterName) . "', '" . mysql_real_escape_string($newsletterPath) . "', '$newsletterDate')";
    if (!mysql_query($query,$connection))
    {
        die('Error: ' . mysql_error() . ' Please go back and try again.');
    }

    //copy pdf to the right location
    if (copy($tempLocation, "../" . $newsletterPath))
    {
        include '../includes/db-connection.php';

        $queryContact = "SELECT users.email_address FROM form_pages LEFT JOIN users ON form_pages.user_id = users.user_id WHERE form_pages.page_name = 'add-newsletter'";
        $resultContact = mysql_query($queryContact);

        while ($rowContact = mysql_fetch_assoc($resultContact)) 
        {
            $from = $rowContact["email_address"];
        }

        $query = "SELECT * FROM newsletter_recipients";
        $result = mysql_query($query);

        $subject = 'Newsletter';

        $message = new Mail_mime();
        $text = file_get_contents("mail_text.txt");
        $html = file_get_contents("mail_html.html");

        $message->setTXTBody("Hello world");
        $message->setHTMLBody("<b>Hello world</b>");
        $message->addAttachment($tempLocation);
        $body = $message->get();
        $extraheaders = array("From"=>"timottewellis@gmail.com", "Subject"=>"My Subject 7");
        $headers = $message->headers($extraheaders);

        $mail = Mail::factory("mail");
        $mail->send("timottewellis@gmail.com", $headers, $body);

        $_SESSION['pdf'] = true;
        $_SESSION['newsletterName'] = null;
        $_SESSION['newsletterDate'] = null;
        header("location:success/");
    }
    else 
    {
        $_SESSION['upload'] = false;
        header("location:add-newsletter/");
    }
}
else 
{
    $_SESSION['pdf'] = false;
    echo "hello " . $_FILES["newsletter"]["type"];
    header("location:add-newsletter/");
}
?>

我在做錯什么的任何提示將不勝感激。

我已經花了幾個小時處理完全相同的問題:電子郵件與Gmail附件和Web郵件服務的附件都可以很好地傳遞,但是在OUtlook或Outlook Web Access中,附件在郵件正文中顯得很亂。

對我來說,我發現問題出在發送郵件項目的HEADERS數組中,甚至在添加附件之前。

我最初有這個:

$headers = array ('MIME-Version' => '1.0',
'Content-type' => 'text/html; charset=iso-8859-1',
'From' => 'ask@'.$siteurl,
'To' => $emailTo,
'Subject' => $subject);

這引起了麻煩。 一旦我從標題中刪除了Content-Type,附件在我嘗試過的所有郵件閱讀器中都可以正常工作。 我敢肯定內容類型有一個“正確”的設置,但我很高興它對我完全有用,所以我繼續進行,並取消了它。

$headers = array ('MIME-Version' => '1.0',
'From' => 'ask@'.$siteurl,
'To' => $emailTo,
'Subject' => $subject);

遠非理想的解決方案,但卻奏效了。 希望這次投資能幫助別人:)

-D

提姆

addAttachment也采用了mime內容類型。 你有沒有嘗試過

$message->addAttachment($tempLocation,'application/pdf');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM