`

Zend_Mail发邮件标题乱码

阅读更多

一 。 今天试了一下,用Zend framework 提供的Zend _mail发邮件,发送成功,可是标题中文乱码...

        google了一下,发现有人说长度太长就会乱码...

        zf的issue tracker上已经有report...我还没有尝试上面有人提供的方法...等一下尝试一下...但是我先记录一下:

In Zend _Mail::_encodeHeader() and Zend _Mail::setSubject().

Now, it is:
=?utf-8?Q?mikespook=20=E9=82=80=E8=AB=8B=E6=82=A8=E9=80=B2=E5=85=A5=20ecbattle.net=20=E7=?=9A=84=E4=B8=96=E7=95=8C=E5=85=A7?=

But should be:
=?utf-8?Q?mikespook=20=E9=82=80=E8=AB=8B=E6=82=A8=E9=80=B2=E5=85=A5=20ecbattle.net=20=E7=?=
=?utf-8?Q?9A=84=E4=B8=96=E7=95=8C=E5=85=A7?=

And if I modify the code in Zend /Mail.php line: 392.

protected function _encodeHeader($value)
{
if (Zend _Mime::isPrintable($value)) { return $value; } else { $quotedValue = Zend _Mime::encodeQuotedPrintable($value); $quotedValue = str_replace(array('?', ' '), array('=3F', '=20'), $quotedValue); return '=?' . $this->_charset . '?Q?' . $quotedValue . '?='; }
}
to:
protected function _encodeHeader($value)
{
if (Zend _Mime::isPrintable($value)) { return $value; } } else { $quotedValue = Zend _Mime::encodeQuotedPrintable($value, 200); $quotedValue = str_replace(array('?', ' '), array('=3F', '=20'), $quotedValue); return '=?' . $this->_charset . '?Q?' . $quotedValue . '?='; }
}

there will be no problem. but if it is longer than 200, the subject will be showed hash.

        此外,对于text文本的邮件,可能也需要设置charset/encoding,否则邮件body部分也有可能是乱码...如:
          $mail->setBodyText('测试邮件。','utf-8',Zend _Mime::ENCODING_BASE64);

二。

     //从数据库中得到邮件服务器信息
        $mailInfo = $this->_getmail->getMail();
        //配置邮件服务设置信息
        $config = array (
            'auth' => 'login',
            'username' => $mailInfo['emailUsername'],
            'password' => $mailInfo['emailPassword'],
            'port' => $mailInfo['smtpPort']
        );
        $transport = new Zend_Mail_Transport_Smtp($mailInfo['smtpAddress'], $config);
        //初始编码设置
        $mail = new Zend_Mail('UTF-8');
        //处理body乱码,过滤html        
        $mail->setBodyHtml($data['content'],'utf-8',Zend_Mime::ENCODING_BASE64);
        $mail->setFrom($mailInfo['emailUsername'], $data['addressor']);
        foreach ($data['mail'] as $key => $value) {
            $mail->addTo($data['mail'][$key], 'Some Recipient');
        }
        $mail->setSubject($data['mailTitle']);
        $mail->send($transport);

分享到:
评论

相关推荐

    zend_mail乱码处理

    本篇将深入探讨“zend_mail乱码处理”的主题,以及如何解决这个问题。 Zend_Mail 是 Zend Framework 的一部分,用于创建和发送电子邮件。它提供了丰富的功能,包括添加附件、设置收件人、抄送人等。然而,在实际...

    Zend_Mail邮件发送

    3. **构建邮件**:使用 `Zend_Mail` 类创建邮件实例,设置邮件编码(如 UTF-8),添加邮件内容(可以是 HTML 格式)、发件人和收件人信息。 4. **发送邮件**:通过调用 `send` 方法,将邮件通过 SMTP 传输对象发送...

    Zend_Db_Adapter_Mysql 和 Zend_Db_Statement_Mysql

    不支持PDO 、MYSQLI的空间也可以用ZEND框架了 解包后到 Zend 的框架目录 library\Zend\Db 在PHP程序里 $db = Zend_Db::factory('Mysql', $params); 即把原来的 PDO_MYSQL 等改成 Mysql

    Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法

    主要介绍了Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法,详细分析了Zend_Mail组件实现邮件发送的具体步骤,并给出了标题乱码的解决方法,需要的朋友可以参考下

    最新版的Zend_Framework 手册 中文版

    5. **对象关系映射(ORM)**:通过Zend_Db_Table和Zend_Db_Select实现,简化了数据库操作。 6. **表单处理**:Zend_Form组件提供了一种灵活的方式来创建和验证Web表单。 7. **服务端路由与控制器**:通过Zend_...

    Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解

    主要介绍了Zend Framework教程之分发器Zend_Controller_Dispatcher用法,结合实例形式详细分析了分发器Zend_Controller_Dispatcher的结构,功能,使用技巧与相关注意事项,需要的朋友可以参考下

    Zend Framework入门教程之Zend_Config组件用法详解

    在本教程中,我们将深入了解Zend Framework框架中的Zend_Config组件,这是一款专门用于处理应用配置信息的工具。通过实例讲解,我们将会掌握Zend_Config组件的基本用法,并学习如何操作不同类型配置文件的方法。 ...

    Zend Framework教程之Zend_Controller_Plugin插件用法详解

    在Zend Framework中,`Zend_Controller_Plugin`是一个强大的机制,允许开发者在应用程序的不同阶段插入自定义的行为,以扩展和增强其功能。插件系统提供了一种灵活的方式,可以在请求生命周期的关键点进行干预,如...

    Zend_Acl文档

    ### Zend_Acl 文档知识点详解 #### 一、概述 `Zend_Acl`(Access Control List)是Zend Framework中的一个组件,主要用于实现基于角色的访问控制。它通过定义角色(Role)与资源(Resource)之间的关系来管理权限...

    Zend Framework过滤器Zend_Filter用法详解

    Zend_Filter组件中包含很多内置的过滤器类,比如用于去除空格的Zend_Filter_StripWhitespace、用于字符串大小写转换的Zend_Filter_StringToLower和Zend_Filter_StringToUpper,还有对特定数据格式进行验证的过滤器等...

    Zend_db数据库操作课件

    Zend_db数据库操作课件

    ZEND FRAMEWORK 1.11.7 中文参考文档

    •Zend_Mail •Zend_Markup •Zend_Measure •Zend_Memory •Zend_Mime •Zend_Navigation •Zend_Oauth •Zend_OpenId •Zend_Paginator •Zend_Pdf •Zend_ProgressBar •Zend_Queue •Zend_...

    Zend Framework教程之视图组件Zend_View用法详解

    在Zend Framework中,Zend_View是模型-视图-控制器(MVC)架构中视图层的重要组成部分,负责处理和呈现应用程序的输出。本教程将深入探讨Zend_View的使用方法、工作原理及其与其他组件的交互。 首先,让我们了解...

    Zend_Framework_zh(2011.07.18).chm

    Zend_Framework_zh(2011.07.18).chm

    Zend_Framework_ZH中文手册

    - **Zend_Db**:提供了一套数据库抽象层,支持多种数据库系统,简化了数据库操作。 - **Zend_Feed**:处理RSS和Atom feed,支持创建、读取和更新feed。 - **Zend_Http**:处理HTTP请求和响应,支持文件上传、Cookie...

    Zend_Framework中文手册

    例如,可以单独使用 `Zend_Db` 进行数据库操作,`Zend_View` 处理视图渲染,或者 `Zend_Controller` 实现路由和控制器功能。 **4. 对象关系映射(ORM):** Zend Framework 包含了 `Zend_Db` 和 `Zend_Doctrine`,...

    Zend_framework_in_REST

    - **PHP**:使用内置的 `libcurl` 或 Zend Framework 中的 `zend_controller_request` 和 `zend_http`。 - **JavaScript**:使用 `XMLHttpRequest` 进行 AJAX 请求。 - **命令行工具**:使用 `curl` 命令。 - **...

Global site tag (gtag.js) - Google Analytics