gpt4 book ai didi

PHP IMAP 解码消息

转载 作者:行者123 更新时间:2023-12-03 00:21:27 24 4
gpt4 key购买 nike

我有通过 Base64 编码和 8 位编码发送的电子邮件。我想知道如何使用 imap_fetchstruct 检查消息的编码(已经这样做了大约两个小时,所以丢失了),然后正确解码。

Gmail 和 Mailbox(iOS 上的应用程序)将其作为 8 位发送,而 Windows 8 的邮件应用程序将其作为 base64 发送。不管怎样,我需要通过检测它使用的编码类型来解码它是 8 位还是 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_fetchstruct() 应该将此信息返回给您。以下代码应该完全符合您的要求:

<?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);
?>

关于PHP IMAP 解码消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15539902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com