【问题标题】:PEAR Mail, setting the content-type header breaks the emailPEAR Mail,设置内容类型标头会破坏电子邮件
【发布时间】:2013-02-08 05:02:57
【问题描述】:

我正在尝试使用 PEAR 发送 UTF-8 电子邮件,但是每当我设置内容类型标头时,发送的电子邮件就会以一种奇怪的方式被破坏。

这些是我用于标题和梨本身的设置:

$headers = array (
    'From' => $emailAdresa,
    'To' => $emailDest,
    'Subject' => $subiect,
    'Return-Path' => '****@****.eu',
    'X-Codent' => '['.$codent_header.']',
    'X-Ent' => '['.$ent_header.']',
    'X-Bzd' => '['.$baza_date.']',
    'X-Email' => '['.$email['Email'].']',
    'Content-Type' => 'text/html; charset=UTF-8'
);                                      
$hdrs = $mime->headers($headers, true);
$smtp = Mail::factory('smtp',
        array ('host' => $emailServer,
               'auth' => true,
               'port' => ''.$emailPort.'',
               'username' => $emailUtilizator,
               'password' => $emailParola));

$mail = $smtp->send($emailDest, $hdrs, $body);

这是设置 Content-type 标头后我收到的电子邮件:

Return-Path: <*******>
Received: from localhost ([93.114.43.202])
        by mx.google.com with ESMTPS id fy17sm687802bkc.6.2013.02.22.06.23.42
        (version=TLSv1 cipher=RC4-SHA bits=128/128);
        Fri, 22 Feb 2013 06:23:43 -0800 (PST)
Message-ID: <51277f6f.9178cd0a.600a.2b1c@mx.google.com>
Date: Fri, 22 Feb 2013 06:23:43 -0800 (PST)
Content-Type: text/html; charset=UTF-8
MIME-Version: 1.0
From: ******
To: ******
Subject: test
Return-Path: ******
X-Codent: [230802]
X-Ent: [Note]
X-Bzd: [1]
X-Email: [******]

--=_f11764219c81f7cdd5e1729bb3b44ca6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=ISO-8859-1

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www=
=2Ew3.org/TR/REC-html40/loose.dtd">
<html><body><p>test ?&icirc;??&icirc;&acirc;</p>

<p>&nbsp;</p>
test<br>
abcd<br>
test semnatura<img height=3D"1px" width=3D"1px" src=3D"******" /></body>=
</html>

--=_f11764219c81f7cdd5e1729bb3b44ca6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=ISO-8859-1

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www=
=2Ew3.org/TR/REC-html40/loose.dtd">
<html><body><p>test ?&icirc;??&icirc;&acirc;</p>

<p>&nbsp;</p>
test<br>
abcd<br>
test semnatura<img height=3D"1px" width=3D"1px" src=3D"******" /></body>=
</html>

--=_f11764219c81f7cdd5e1729bb3b44ca6--

请注意,当我在没有内容类型标头的情况下发送电子邮件时,电子邮件会正常发送,但我希望它使用 utf-8 编码以用于变音符号。

【问题讨论】:

    标签: php email pear


    【解决方案1】:

    您还需要为从 $mime 对象返回的正文内容设置编码。

    // set encoding and specify charsets
    $mimeparams=array(); 
    $mimeparams['text_encoding']="8bit";
    $mimeparams['text_charset']="UTF-8";
    $mimeparams['html_charset']="UTF-8";
    $mimeparams['head_charset']="UTF-8"; 
    
    // set the content
    $mime->setTXTBody($text);
    $mime->setHTMLBody($html);
    
    // retrieve the body
    $body = $mime->get($mimeparams); 
    

    【讨论】:

    • 抱歉拖了这么久。我已经做到了。我尝试了使用和不使用 mime 参数并得到了相同的结果。
    • 查看代码,有 text_charset、html_charset、head_charset - 我已经提到过。还有一个 headers_charset 和一个普通的“charset”。也许其他两个也需要设置。还有“html_encoding”、“head_encoding”、“filename_encoding”、“name_encoding”和“encoding”。也许其中一些其他的也需要设置。
    猜你喜欢
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2016-04-06
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多