Transfert d'un e-mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Transfert d'un e-mail

Re: Transfert d'un e-mail

par Figaro90 » 21 mars 2013, 13:12

je me repond pour le problème de suppression du mail.

Apparement par imap_xxx on peut pas.
Voici une solution par socket en POP3

// delete mail via connexion POP3 par socket
function deleteMail ($MailNum = 1) 
{
	global $popServer, $srcFaxMail, $srcFaxPass;
	$lenBuf = 512;  // max (RFC 1939) the returned line a POP3 server can send is 512 bytes.
	
	$sRet = 'ERR: ?';
	while (true) {
		
		// connexion
		set_time_limit(90); 
		$fp = fsockopen($popServer, 110, $errno, $errstr);
		if (!$fp) {$sRet = "fsockopen [$errno], [$errstr]"; break;}
		
		// verif connexion
		stream_set_blocking($fp,true); 
		$reply = fgets($fp, $lenBuf);
		if (strpos($reply, "+OK")===false) {$sRet = "connection [$reply]"; break;}
		
		// login
		fwrite($fp, "USER $srcFaxMail\r\n"); 
		$reply = fgets($fp,$lenBuf);
		if (!strpos($reply, "+OK")===false) {$sRet = "login(user) [$reply]"; break;}
		fwrite($fp, "PASS $srcFaxPass\r\n"); 
		$reply = fgets($fp,$lenBuf);
		if (strpos($reply, "+OK")===false) {$sRet = "login(pass) [$reply]"; break;}
		
		// check message
		fwrite($fp, "STAT\r\n"); 
		$reply = fgets($fp,$lenBuf);
		if (strpos($reply, "+OK")===false) {$sRet = "check message [$reply]"; break;}
		$Vars = explode(" ",$reply); 
		$count = $Vars[1]; 
		settype($count,"integer");
		if(!$count || $count < $MailNum) {$sRet = "check message count=$count"; break;}
		
		// delete mail
		fwrite($fp,"DELE $MailNum\r\n"); 
		$reply = fgets($fp,$lenBuf); $reply = str_replace("\r","",$reply); $reply = str_replace("\n","",$reply); 
		if (strpos($reply, "+OK")===false) {$sRet = "delete mail [$reply]"; break;}
		
		$sRet = 'OK';
		break;
	}
	
	// close
	fwrite($fp,"QUIT\r\n"); 
	$reply = fgets($fp,$lenBuf);
	fclose($fp); 
	return $sRet;
}

Re: Transfert d'un e-mail

par zeus » 20 mars 2013, 18:06

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.

Re: Transfert d'un e-mail

par Figaro90 » 20 mars 2013, 17:54

Oui, j'avais bien vu, mais au moins, ca aide les suivants qui auront le même problème...
C'est le but du site je crois non ?


Et j’en profite : J'ai un autre problème.
Une fois le mail lu, il ne se supprime pas de la mailbox, du coup, il est relu à chaque fois.


J’ai bien sûr essayé imap_setflag_full dans tous les sens, mais rien n’y fait en POP3…

Si quelqu’un a une solution, (peut-être moogli ?), je suis preneur…

Merci.

Re: Transfert d'un e-mail

par moogli » 20 mars 2013, 17:43

Même pas deux ans de retard .... :mrgreen:

Re: Transfert d'un e-mail

par Figaro90 » 20 mars 2013, 12:52

it work !
$header=imap_fetchheader($rcm,$nummail);
$body = imap_body($rcm, $nummail, FT_INTERNAL | FT_PEEK);

$body=ereg_replace("\r","",$body);
$header=ereg_replace("\r","",$header);

$ret = mail("[email protected]","mail transfert",$body,$header); 
echo "ret mail=$ret\n";
Note: (http://www.php.net/manual/fr/function.mail.php)

Si le message n'est pas reçu, essayez d'utiliser uniquement un caractère LF (\n). Quelques agents de transfert de mail Unix (par exemple » qmail) remplacent le caractère LF par le caractère CRLF automatiquement (ce qui revient à doubler le caractère CR si le caractère CRLF est utilisé). Ceci doit être un dernier recours car cela ne correspond pas à la » RFC 2822.

Re: Transfert d'un e-mail

par moogli » 09 juin 2011, 16:46

de rien :)

Re: Transfert d'un e-mail

par draciP » 09 juin 2011, 15:46

J'ai finalement décomposé le mail en plusieurs parties : texte, html et les pièces jointes pour pouvoir reconstituer un nouveau mail et l'envoyer. Je trouvais ça fastidieux, mais je crois que c'est la seule méthode. Je pensais pouvoir juste changer le header du mail et le renvoyer... mais non.

Merci pour ton aide moogli :wink:

Re: Transfert d'un e-mail

par moogli » 08 juin 2011, 19:53

oui ou simplement avec imap_mail

après je connais trop l'extension imap, j'ai trouvé des chose sur le net tel que http://www.phpcs.com/codes/EXTRAIRE-PIE ... 36798.aspx

d'ailleur y a un sujet ce le forum php4 php-deprecated/encodage-des-pieces-jointes-t28537.html

@+

Re: Transfert d'un e-mail

par draciP » 08 juin 2011, 15:41

Pour la partie "renvoyer un nouveau mail" justement, tu penses faire comment ? A faire avec imap_mail_compose ? Et si j'ai des pièces jointes ?

Re: Transfert d'un e-mail

par moogli » 08 juin 2011, 13:57

salut,

a priori non pas de fonction de ce type dans l'extension imap je dirais simplement qu'il "suffit" de lire le contenu du mail, l’entête et de renvoyer un nouveau mail ;)


@+

Transfert d'un e-mail

par draciP » 08 juin 2011, 11:43

Bonjour,

J'ai un service web qui m'envoie des e-mails. Je les récupère en POP, les loggue en BDD et les supprime de la BAL. Mais dans le cas où parmi ces e-mails il y en a qui ne proviennent pas du service web, je veux pouvoir les renvoyer à Mme Dugenou (non, aucun lien de parenté :D ).

Du coup, comme j'ai le "mail brut", il n'y a pas un moyen simple de le renvoyer, juste en changeant l'adresse du destinataire ? Ca parle à quelqu'un ? J'ai fait une recherche Google mais je ne trouve rien d'intéressant...

Merci