一 。 今天试了一下,用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 Framework 的一部分,用于创建和发送电子邮件。它提供了丰富的功能,包括添加附件、设置收件人、抄送人等。然而,在实际...
3. **构建邮件**:使用 `Zend_Mail` 类创建邮件实例,设置邮件编码(如 UTF-8),添加邮件内容(可以是 HTML 格式)、发件人和收件人信息。 4. **发送邮件**:通过调用 `send` 方法,将邮件通过 SMTP 传输对象发送...
不支持PDO 、MYSQLI的空间也可以用ZEND框架了 解包后到 Zend 的框架目录 library\Zend\Db 在PHP程序里 $db = Zend_Db::factory('Mysql', $params); 即把原来的 PDO_MYSQL 等改成 Mysql
主要介绍了Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法,详细分析了Zend_Mail组件实现邮件发送的具体步骤,并给出了标题乱码的解决方法,需要的朋友可以参考下
5. **对象关系映射(ORM)**:通过Zend_Db_Table和Zend_Db_Select实现,简化了数据库操作。 6. **表单处理**:Zend_Form组件提供了一种灵活的方式来创建和验证Web表单。 7. **服务端路由与控制器**:通过Zend_...
主要介绍了Zend Framework教程之分发器Zend_Controller_Dispatcher用法,结合实例形式详细分析了分发器Zend_Controller_Dispatcher的结构,功能,使用技巧与相关注意事项,需要的朋友可以参考下
在本教程中,我们将深入了解Zend Framework框架中的Zend_Config组件,这是一款专门用于处理应用配置信息的工具。通过实例讲解,我们将会掌握Zend_Config组件的基本用法,并学习如何操作不同类型配置文件的方法。 ...
在Zend Framework中,`Zend_Controller_Plugin`是一个强大的机制,允许开发者在应用程序的不同阶段插入自定义的行为,以扩展和增强其功能。插件系统提供了一种灵活的方式,可以在请求生命周期的关键点进行干预,如...
### Zend_Acl 文档知识点详解 #### 一、概述 `Zend_Acl`(Access Control List)是Zend Framework中的一个组件,主要用于实现基于角色的访问控制。它通过定义角色(Role)与资源(Resource)之间的关系来管理权限...
Zend_Filter组件中包含很多内置的过滤器类,比如用于去除空格的Zend_Filter_StripWhitespace、用于字符串大小写转换的Zend_Filter_StringToLower和Zend_Filter_StringToUpper,还有对特定数据格式进行验证的过滤器等...
Zend_db数据库操作课件
•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是模型-视图-控制器(MVC)架构中视图层的重要组成部分,负责处理和呈现应用程序的输出。本教程将深入探讨Zend_View的使用方法、工作原理及其与其他组件的交互。 首先,让我们了解...
Zend_Framework_zh(2011.07.18).chm
- **Zend_Db**:提供了一套数据库抽象层,支持多种数据库系统,简化了数据库操作。 - **Zend_Feed**:处理RSS和Atom feed,支持创建、读取和更新feed。 - **Zend_Http**:处理HTTP请求和响应,支持文件上传、Cookie...
例如,可以单独使用 `Zend_Db` 进行数据库操作,`Zend_View` 处理视图渲染,或者 `Zend_Controller` 实现路由和控制器功能。 **4. 对象关系映射(ORM):** Zend Framework 包含了 `Zend_Db` 和 `Zend_Doctrine`,...
- **PHP**:使用内置的 `libcurl` 或 Zend Framework 中的 `zend_controller_request` 和 `zend_http`。 - **JavaScript**:使用 `XMLHttpRequest` 进行 AJAX 请求。 - **命令行工具**:使用 `curl` 命令。 - **...