[RESOLU] Envoyer un mail à la lecture d'un autre

Eléphanteau du PHP | 25 Messages

15 juin 2014, 16:27

Bonjour à tous!

Je m'excuse par avance si le titre n'est pas très explicite, je ne savais pas trop comment formuler l'idée en quelques mots. Je vais vous expliquer ce que je souhaite faire: j'aimerais qu'à la lecture d'un mail (que j'ai précédemment envoyé au destinataire via la fonction mail en PHP), le destinataire en reçoive automatiquement un autre lui disant "Merci d'avoir lu le mail précédent!". Du coup, je me demande s'il est possible de faire une fonction mail dans le sujet du message d'une fonction mail?! (oui, ça semble bizarre). Mais je sais qu'il existe un moyen puisque j'ai reçu ce type de mail, il y a peu.

Je suis dans le flou, pouvez-vous m'éclairer? D'avance un grand merci!

Mammouth du PHP | 1339 Messages

15 juin 2014, 17:11

Je ne suis pas sur ce que je dis tient la route.
Ce que tu peux eventuellement faire c'est une image en PHP qui quand elle est généré, ce meme code PHP envoit le mail ...
Les sociétés qui gerent les newsletter on un systeme pour savoir combien de gens ont lu le mail ou cliquer sur le lien donc ca doit être faisable.
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

16 juin 2014, 13:19

Ton idée m'intéresse mais peux-tu être plus précis sur la façon dont je dois procéder pour créer cette image PHP?

Eléphant du PHP | 422 Messages

16 juin 2014, 13:28

hello

il faut faire un mail au format HTML
dedans tu créer un lien vers une image (http://monserv.php/fake.php?id=[unechai ... fietonuser]) en background par exemple
lorsque le mail est ouvert (il est demandé (souvent) à l'utilisateur si il veux charger les images !)
si oui
le lien est requété
fake.php?id=... récupère l'id fait son taff (envoyer un mail) et retourne un pixel gif par exemple (histoire d'etre propre)
et voila
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Mammouth du PHP | 1339 Messages

16 juin 2014, 13:31

Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

16 juin 2014, 23:28

J'ai ajouté dans le message du mail (dans la fonction mail) un lien vers une image comme ceci:
<img src="http://monsite.com/mail.php?mail=adressemail" alt=""/>';
Et j'ai créé la page mail.php qui contient ceci:
<?php
  header ("Content-type: image/png");
  $image = imagecreate(1,1);
  $transparent = imagecolorallocate($image, 255, 255, 255);
  imagecolortransparent($image, $transparent);
  imagestring($image, 4, 35, 15, "", $transparent);
  imagepng($image);
  
  $to = $_POST['mail'];
  $from = 'Webmaster';
  $subject = 'Merci!';
  $message = 'Merci d\'avoir lu le précédent message!';
  $headers = 'From: Webmaster <[email protected]>' ."\n";
  $headers .= 'MIME-version: 1.0' ."\n";
  $headers .= 'content-type: text/html; charset="utf-8"' ."\n";
  if(mail($to, $subject, $message, $headers)) {
  echo '';
  }
  else{
  echo '';
  }    
?>
L'image s'affiche mais le script ne se lance pas. Pourquoi?

Mammouth du PHP | 1339 Messages

17 juin 2014, 08:32

Peut être le $to = $_POST['mail']; au lieu de $to = $_GET['mail'];

Le plus simple est d'aller sur http://monsite.com/mail.php?mail=adressemail et de voir ce qu'il se passe...
En gros tu verrais surement une erreur concernant l'inexistance de la variable 'mail'
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphant du PHP | 422 Messages

17 juin 2014, 09:23

hello

personnellement j'aurais inversé la gestion des mails et la génération de l'image.

ensuite $_GET au lieu de $_POST

et ensuite c'est le SPAM KING royal script =D> qu'est ce qui ce passe si un utilisateur fait une boucle sur ce lien avec des emails de n'importe qui !!! (ensuite je te laisse un peu de lecture en supplément, http://securephpwiki.com/index.php/Email_Injection)

donc il faut un id unique genre hash (http://php.net/manual/en/function.hash.php) linké à ton user/mail ... et c'est lui que tu met dans ta var $_GET. voir même pourquoi pas faire un id à la volé, à l'envoi du mail stocké dans la BD et que tu delete une fois le lien reçu et le new mail envoyé.
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Eléphanteau du PHP | 25 Messages

17 juin 2014, 11:48

Oui, merci! :) Je vais sécuriser tout ça! Mais par contre, comment puis-je faire pour que le script ne s'exécute qu'une seule fois? Parce que là, à chaque fois que j'ouvre le 1er mail, j'en reçois un pour me dire 'merci d'avoir lu le précédent message'.

Mammouth du PHP | 1339 Messages

17 juin 2014, 11:51

... Stocker l'information dans une base de données ?
... Creer une image par mail et si l'image existe deja c'est que le mail a déjà été affiché ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 25 Messages

17 juin 2014, 11:53

Ok, un grand merci pour votre aide! Mon problème est résolu!

ViPHP
ViPHP | 2577 Messages

17 juin 2014, 13:12

Par défaut, les clients mails ne lisent pas les images qui ne sont pas de le mail.