Extraction mail

Probleme decodage

Le problème exposé dans ce sujet a été résolu.

Bonjour

J’accede a ma boite mail afin d’en recuperer les mails.

```php

1
2
3
4
5
6
7
8
  $uid = $_GET['uid'];
  $date_mail=$_GET['date_mail'];
  $sujet_mail= $_GET['sujet_mail'];

  $headerText = imap_fetchHeader($mbox, $uid, FT_UID);
  $header = imap_rfc822_parse_headers($headerText);

  $corps = imap_fetchbody($mbox, $uid, 1, FT_UID);```

J’ai des problemes avec le corps du message lorsque celui-ci contient des caracteres accentués.

Quand le corps du mail est court, le mot "étanchéité" devient : w6l0YW5jaMOpaXTDqQ0K

base64_decode($corps); solutionne le probleme

mais quand le corps du mail est un peu plus long, le caractère "é" devient : r=C3=A9 (Une autre forme d’encodage). Exemple: r=C3=A9novation.

Comment mettre en place des conditions avec les bonnes fonctions pour afficher correctement tout ces cas de figure?

C’est a dire:

Mail sans caracteres accentués,

mail court contenant caracteres accentués,

mail long avec caracteres accentués.

Merci d’avance..

+0 -0

A-312

Merci pour ta reponse.

Pour ce corps de mail: Revêtement étanchéité 22-22 Revêtement étanchéité 22-22 Revêtement étanchéité 22-22 Revêtement étanchéité 22-22

c’est : Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64

Pour ce mail: rénovation

Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">r=C3=A9novation</div>

Donc ca varie… Comment faire pour decoder quel que soit l encodage stp?

+0 -0

Il doit sûrement avoir une classe toute faite pour faire ça et te simplifier la vie en cherchant sur le web (sur github). Peut-être PHP IMAP ?

Essaye peut être ça. Mais je pense qu’il y aura aussi un problème pour encoder en Utf8 (les anglais n’ont pas de soucis d’encodage sachant qu’il n’utilise pas d’accent).

Apparemment tu as cette fonction. Je n’ai pas d’espace de développement a porté de main aujourd’hui, tiens moi au courant si le problème est réglé.

Je pense avoir trouvé ce qu’il me faut:

1
2
3
imap_bodystruct()  

imap_fetchstructure() 

permettent de verifier le type d’encodage. On peut ensuite décoder de manière appropriée:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 $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);
            }

Source: https://stackoverflow.com/questions/15539902/php-imap-decoding-messages

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte