Tôi có email được gửi qua mã hóa base64 và mã hóa 8 bit. Tôi đã tự hỏi làm thế nào tôi có thể kiểm tra mã hóa của tin nhắn bằng cách sử dụng imap_fetchstructure (đã làm điều này trong khoảng hai giờ, vì vậy bị mất) và sau đó giải mã nó đúng cách.Thông báo giải mã PHP IMAP
Gmail và hộp thư (ứng dụng trên iOS) đang gửi nó dưới dạng 8 bit trong khi ứng dụng Thư của Windows 8 gửi nó dưới dạng base64. Dù bằng cách nào, tôi cần phải giải mã cho dù 8bit hoặc base64 của nó bằng cách phát hiện loại mã hóa nó đã sử dụng.
Sử dụng PHP 5.1.6 (có, tôi nên cập nhật, bận).
Tôi thực sự không có mã để hiển thị. Đây là tất cả những gì tôi có:
<?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);
?>
là những nhân vật không đến đúng cho bạn về những email? –
@DeadMan Email từ Windows Mail (ứng dụng Metro trong Win8) là base64, trong khi các email đến từ các ứng dụng khác là 8 bit. – alexpja
Kết quả của ['imap_fetchstructure()'] (http://php.net/manual/en/function.imap-fetchstructure.php) phải có thuộc tính 'encoding'. Điều đó không làm việc cho bạn? – Phil