8791 sujets

Développement web côté serveur, CMS

Bonjour,

Voilà, j'ai un souci avec une fonction d'envoi de courriel automatisé avec PHP. À la base, le code suivant fonctionne parfaitement :


$utilisateur = "Mon nom <mon.nom@adresse.com>" // Celui qui envoie
$destinataire = "Mon nom <mon.nom@adresse.com>"; // Celui qui reçoit
$sujet = "Formulaire xyz";
$de  = "From:$utilisateur\n";

ob_start();
include("includes/inc_mail_consentement.php"); //envoyer le contenu du fichier php par courriel
$data = ob_get_contents(); 
ob_end_clean();

mail($destinataire,$sujet,$data,$de);


Le problème se complique lorsque j'utilise GPG (http://www.alt-php-faq.org/local/65/) pour crypter le contenu de mon message. En fait, techniquement, le contenu est crypté et restitué correctement, à la seule exception que tous les guillemets doubles contenus dans mon message se volatilisent. En d'autres termes, si j'envoie mon message non crypté, les guillemets doubles sont là dans mon message. Si le message est envoyé crypté, il n'y a plus aucun guillemets doubles dans mon message. Au début, je croyais que la directive PHP magic_quotes était responsable de ce problème, mais comme les guillemets doubles sont conservés dans mon message version non cryptée, j'ai des doutes...

Quelqu'un aurait-il une idée là-dessus? Je suis fatiguée de me cogner la tête sur un mur... Smiley biggol

Pour info, voici le code pour cryptage du message :


$pgp="/usr/bin/gpg"; // Emplacement de GPG sur le serveur
$destinataire = "Mon nom <mon.nom@adresse.com>"; // Celui qui reçoit le message PGP
$sujet = "Formulaire de consentement";
$utilisateur = "Mon nom <mon.nom@adresse.com>"; // Utilisateur qui envoie le courriel
$de  = "From:$utilisateur\n";

// Création de la variable $data. C'est le contenu à crypter.
ob_start();
include("includes/inc_mail_consentement.php");
$data = ob_get_contents(); 
ob_end_clean();

// Commande de cryptage
$command = 'echo "'.$data.'" | '.$pgp.' -ae --always-trust --batch --no-secmem-warning -u "'.$utilisateur.'" -r "'.$destinataire.'"'; 
$oldhome = getEnv("HOME");
putenv("GNUPGHOME=/home/viae2601/.gnupg"); // Emplacement du jeu de clés sur le serveur
$result = exec($command, $encrypted, $errorcode);
putenv("HOME=$oldhome");
$message = implode("\n", $encrypted);

// ----------------------------------
// Si encryption réussie et message envoyé : 
// - Confirmation d'envoi du courriel et informations supplémentaires. 
// -----------------------------------
if(ereg("-----BEGIN PGP MESSAGE-----.*-----END PGP MESSAGE-----",$message)) {
   if(mail($destinataire,$sujet,$message,$de)) { echo "Hourra";}
;} 
// -------------------------------------
// Message d'erreur en cas d'échec d'envoi du courriel et/ou de l'encryption.
// -------------------------------------
else { echo "Zut alors!";} 


Merci infiniment!
Nalita33
Modifié par nalita33 (31 Oct 2008 - 03:41)