7439 sujets

Développement web côté serveur, CMS

Bonjour je déambule, je ZIGZAG perdu ...
Avec PHP et dans le but de l'afficher sur une page web, je cherche à récupérer dans le dernier message d'une boite mail une image JPG.

J 'ai déjà un code qui fonctionne avec une certaine structure de message.
Je ne comprend pas , pouvez vous m'aider ?!

Le message dans lequel il y à le JPG :
Return-Path: <blabla@blabla.com>
Delivered-To: <blabla@blabla.com>
Received: from exim-proxy-dc2-2.online.net ([10.41.2.92])
	by exim-backend-21.online.net (Dovecot) with LMTP id IkQLLJQyxVnUIAAAge5GdQ
	for <blabla@blabla.com>; Fri, 22 Sep 2017 17:58:29 +0200
Received: from [10.41.2.137] (helo=smtp.smtpout.orange.fr)
	by exim-proxy-dc2-2.online.net with esmtp (Exim 4.86_2)
	(envelope-from <blabla@blabla.com>)
	id 1dvQLV-0004B5-C7
	for blabla@blabla.com; Fri, 22 Sep 2017 17:58:29 +0200
Received: from smtp.smtpout.orange.fr ([80.12.242.126])
	by mx-vit.online.net (MXproxy) for blabla@blabla.com ;
	Fri, 22 Sep 2017 17:58:29 +0200 (CEST)
X-ProXaD-SC: state=HAM score=49
Received: from CAM000 ([10.162.66.33])
	by mwinf5d07 with ME
	id CfxU1w00c0j3Q9m03fxXkk; Fri, 22 Sep 2017 17:58:29 +0200
X-ME-Helo: CAM000
X-ME-Auth: c2VycmUtY2hlLWVhdXgtdml2ZXMxQG9yYW5nZS5mcg==
X-ME-Date: Fri, 22 Sep 2017 17:58:29 +0200
X-ME-IP: 10.162.66.33
Message-ID: <3ceabe91ed915f2ae68eaacdf0f42195@mwinf5d07.me-wanadoo.net>
From: "CAM000" <blabla@blabla.com>
To: <blabla@blabla.com>
Subject: 22/09/2017 17:53:56
MIME-Version: 1.0
Content-Type: multipart/mixed;
	boundary="===Quectel_000_0013_01CA1D99.17A48460==="
X-online-proxy-in: FLEX_R0FVczRHR0k4a3k2czRFMA==cPvuIpiJsq/n9XKVtRtD52JfLjl1ZfZBr3q2TWKJ
X-online-to: blabla@blabla.com
X-original-for: blabla@blabla.com

This is a multi-part message in MIME format.

--===Quectel_000_0013_01CA1D99.17A48460===
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: 7bit

22/09/2017 17:53:57 
--===Quectel_000_0013_01CA1D99.17A48460===
Content-Type: application/octet-stream;
	name="0017.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="0017.JPG"

/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIx


........




--===Quectel_000_0013_01CA1D99.17A48460===-- 


Je vous donne aussi le code PHP que j'ai :
 /* Identifiants */
$hostname = '{pop.online.net:110/pop3}INBOX';
$username = 'user';
$password = 'pass';

/* Connexion à la boîte email */
$inbox = imap_open($hostname,$username,$password, null, 1);

/* Récupération de la liste d'email */
$emails = imap_search($inbox,'ALL');

/* Si il y a des emails... */
if($emails) {

	/* Récupération de l'id du dernier email */
	$email = end($emails);

	/* Récupération de la structure de l'email */
	$structures = imap_fetchstructure($inbox, $email)->parts;

	$img = null;

	/* Boucle sur les différente partie de l'email */
	foreach ($structures as $key => $structure) {

		/* On vérifie que c'est bien une image (type = 5) et que c'est un fichier attaché (disposition = attachment) */
		if ($structure->type === 5 && $structure->disposition === 'ATTACHMENT') {

			/* On récupère le contenu de l'image et on le décode (base64_decode) ainsi que son type (jpg, png, gif ...) */
			$body = imap_fetchbody($inbox, $email, $key+1);
			$img = array(
				'type' => 'image/'.strtolower($structure->subtype),
				'body' => base64_decode($body)
			);			
		}
	}

	/* Si on a bien récupéré une image, alors on l'affiche */
	if (!empty($img)) {
		header('Content-type: '.$img['type']);
		print $img['body'];
	}

}

/* On ferme la connexion */
imap_close($inbox);


Un grand merci !!