我有通过base64编码和8bit编码发送的电子邮件。我想知道如何使用imap_fetchstructure检查消息的编码(因为这样做大约两个小时,所以丢失了)然后正确解码。
Gmail和Mailbox(iOS上的应用)以8位发送,而Windows
8的Mail应用以base64发送。无论哪种方式,我都需要通过检测已使用的编码类型来解码其8bit还是base64。
使用PHP 5.1.6(是的,我应该更新,很忙)。
我真的没有代码要显示。这就是我所拥有的:
<?php
$hostname = '{********:993/imap/ssl}INBOX';
$username = '*********';
$password = '******';
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to server: ' . imap_last_error());
$emails = imap_search($inbox,'ALL');
if($emails) {
$output = '';
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$message = imap_fetchbody($inbox,$email_number,2);
$struct = imap_fetchstructure($inbox, $email_number);
$output.= '<div class="toggle'.($overview[0]->seen ? 'read' : 'unread').'">';
$output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
$output.= '<span class="from">'.$overview[0]->from.'</span>';
$output.= '<span class="date">on '.$overview[0]->date.'</span>';
$output.= '</div>';
/* output the email body */
$output.= '<div class="body">'.$message.'</div>';
}
echo $output;
}
imap_close($inbox);
?>
imap_bodystruct()或imap_fetchstructure()应该将此信息返回给您。以下代码可以完全满足您的需求:
<?php
$hostname = '{********:993/imap/ssl}INBOX';
$username = '*********';
$password = '******';
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to server: ' . imap_last_error());
$emails = imap_search($inbox,'ALL');
if($emails) {
$output = '';
rsort($emails);
foreach($emails as $email_number) {
$overview = imap_fetch_overview($inbox,$email_number,0);
$structure = imap_fetchstructure($inbox, $email_number);
if(isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
$part = $structure->parts[1];
$message = imap_fetchbody($inbox,$email_number,2);
if($part->encoding == 3) {
$message = imap_base64($message);
} else if($part->encoding == 1) {
$message = imap_8bit($message);
} else {
$message = imap_qprint($message);
}
}
$output.= '<div class="toggle'.($overview[0]->seen ? 'read' : 'unread').'">';
$output.= '<span class="from">From: '.utf8_decode(imap_utf8($overview[0]->from)).'</span>';
$output.= '<span class="date">on '.utf8_decode(imap_utf8($overview[0]->date)).'</span>';
$output.= '<br /><span class="subject">Subject('.$part->encoding.'): '.utf8_decode(imap_utf8($overview[0]->subject)).'</span> ';
$output.= '</div>';
$output.= '<div class="body">'.$message.'</div><hr />';
}
echo $output;
}
imap_close($inbox);
?>
我正在尝试与RESTful API接口,该API在post中接受应用程序/x-protobuf对象。 .原型示例对象: 使用请求,我可以将此消息发布到服务器并收到200。 例如 当我以SerializeToString()格式查看此有效负载时,它显示类似于 b'\n\t\n\x03foo\x10\x01' 作为健全性检查,然后我可以创建一个新的消息对象和。将其上的ParseFromString()
这是我的java程序:
我已经下载了json和我的对话档案。我坚持使用奇怪的编码。 json的例子: 应该是这样的: 我正试图这样反序列化它: 不幸的是,输出如下: 有人知道Facebook如何编码json吗?我尝试了几种方法,但没有结果。 谢谢你的帮助。
问题内容: 我一直试图从PubNub解析此JSON消息,但没有任何运气: 有没有人知道如何在golang中解码这种复杂类型? 问题答案: 简短的答案是,您不能直接将非同类型的JSON数组(按您的示例)解组到golang结构中。 长答案是,您应该为PubNubMessage类型定义一个方法,该方法将JSON字符串解组为an ,然后使用类型断言来确保所需的格式并填充结构。 例如:
我正在编写一个netty TCP服务器,它必须根据请求中的值对响应进行编码,例如返回pro buf或JSON。建议的实现方法是什么? 我们的服务器有一个带有解码器、编码器和处理程序的管道。 我考虑使用解码器将正确的编码器添加到管道中,如下所示 这似乎有效,但是否正确?ChannelHandler文档使我想到了这个设计。 可以随时添加或删除通道处理器,因为通道管道是线程安全的。例如,可以在将要交换敏
完整代码 \