PHP IMAP décodage des messages
J'ai des e-mails envoyés via le codage base64 et 8 bits de codage. Je me demandais bien comment j'ai pu vérifier le codage du message à l'aide de imap_fetchstructure (fait cela pendant environ deux heures, perdu) et ensuite décoder correctement.
De Gmail et de la Boîte aux lettres (app sur iOS) de l'envoi 8bit alors que Windows 8 est l'application de Messagerie de l'envoyer en base64. De toute façon, j'ai besoin de décoder si son 8bit ou base64 par la détection de ce type de codage qu'il a utilisés.
À l'aide de PHP 5.1.6 (oui, je devrais mettre à jour, été occupé).
Je n'ai vraiment pas le code pour afficher. C'est tout ce que j'ai:
<?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);
?>
Les personnages sont ne vient pas correctement pour vous de l'e-mail?
E-mails à partir de Windows Mail (Metro app Win8) sont en base64, tandis que celles en provenance d'autres applications sont 8bit.
Le résultat de
Nope.....
E-mails à partir de Windows Mail (Metro app Win8) sont en base64, tandis que celles en provenance d'autres applications sont 8bit.
Le résultat de
imap_fetchstructure()
doit avoir une propriété encoding
. Que cela ne fonctionne pas pour vous?Nope.....
OriginalL'auteur alexpja | 2013-03-21
Vous devez vous connecter pour publier un commentaire.
imap_bodystruct() ou imap_fetchstructure() doit retourner cette info pour vous. Le code suivant devrait faire exactement ce que vous cherchez:
Pourquoi shunt 4 de possible 6 codages dans le bloc else manipulation de quoted_printables? php.net/manual/en/function.imap-fetchstructure.php
ne fonctionne pas lorsque $structure->parties[1] est une pièce jointe
pourquoi vérifier les $structure->parties[1]->encodage et pas $structure->encodage comme mentionné dans la réponse ci-dessous? Je pense que c'est plus correct?
OriginalL'auteur Garry Welding
Vous pouvez regarder cet exemple.
Imap/Imap
Voici un extrait de code
imap_qprint
sur ENC7BIT messages s'affichent pas correctement. Vous pouvez utiliser constantes PHP au lieu de nombres:case ENC7BIT:
OriginalL'auteur Felix
Objets retournés pour imap_fetchstructure()
Encodages de transfert (peut varier en fonction de bibliothèque utilisé)
0 7BIT
1 8BIT
2 BINAIRE
3 BASE64
4 QUOTED-PRINTABLE
5 AUTRES
OriginalL'auteur Ujwal Abhishek