JeuWeb - Crée ton jeu par navigateur
emailing, comment savoir si le mail existe toujours ou non? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : emailing, comment savoir si le mail existe toujours ou non? (/showthread.php?tid=5527)

Pages : 1 2


emailing, comment savoir si le mail existe toujours ou non? - Argorate - 04-07-2011

Bonjour,

Je voulais savoir si quelqu'un connaissais un moyen simple de savoir, lors d'une capagne de mail, comment récupérer les adresses qui ne fonctionnent plus (car n'existant pas ou plus)?

Merci.


RE: emailing, comment savoir si le mail existe toujours ou non? - Dexyne - 04-07-2011

Bah si elle existe pas/plus tu ne reçois pas un message d'erreur ?


RE: emailing, comment savoir si le mail existe toujours ou non? - sharyma - 04-07-2011

Moi je procèderais comme ça :

1) dans la bdd, un champ "mail_valide" qui est sur 0 par défaut (0 signifiant dans ce cas que l'email est valide, et 1 qu'il ne marche pas)

2) lors de l'envoi du mail :
Code :
if (!mail(blabla))
   // ça marche pas, donc on fait une requête pour passer le champ à 1

Du coup quand tu fais ton e-mailing, tu n'envoies qu'aux utilisateurs dont mail_valide = 0


RE: emailing, comment savoir si le mail existe toujours ou non? - ToraTora - 04-07-2011

Tu peux utiliser l'argument -f de la fonction mail :
Code :
mail($to, $object, $message, $headers, "-f$errorTo")

Si une erreur survient (adresse introuvable par exemple), tu recevra un mail de bounce back à l'adresse $errorTo.

Code :
if (!mail(blabla))
Ce code ne suffit pas à détecter si l'adresse est encore active ou non Wink


RE: emailing, comment savoir si le mail existe toujours ou non? - Sephi-Chan - 04-07-2011

Une autre astuce est d'intégrer une image transparente dans le mail dont la source est sur le Web. Quand cette image est chargée, tu peux considérer que l'utilisateur a lu l'email et mettre à jour une colonne DATETIME (read_last_email_at, par exemple) de cet utilisateur.



<img src="http://example.org/users/42/85ec0c11215983f46b849fb202a33bdf/validate_email.gif" alt="" />

Mon application capte les URL de la forme "/users/:id/:email_token/validate_email(.format)" et mon action s'occupe de la traiter :


def validate_email
user = User.find(params[:id])

if user.email_token = params[:email_token]
user.read_last_email_at = Time.current
user.email_token = SecureRandom.hex
user.save
end

render Rails.root.join('public', 'images', 'blank.gif'), :content_type => :gif
end

Je récupère l'utilisateur, puis je vérifie la correspondance du jeton reçu et du véritable jeton. Si ça correspond, je mets à jour la date de réception et je génère un nouveau jeton afin qu'un utilisateur ne puisse pas simuler la réception d'un email.

Et dans tous les cas, mon action sert un GIF transparent de 1x1.

Voilà pour l'astuce ! Smile


RE: emailing, comment savoir si le mail existe toujours ou non? - sharyma - 04-07-2011

Erf oui j'suis bête, ça sert juste à voir si le mail a bien été envoyé ou pas ><
*boulette*

Je ne connaissais pas ta solution par contre, c'est bon à savoir ! Comme quoi il faut toujours lire la doc avant d'utiliser une fonction lol.
Par contre, je suis persuadée qu'il y a moyen d'améliorer ça. Il faudrait réussir à détecter si un email de bounce back est envoyé ou non (je suis sûre que c'est possible) et si oui, modifier le champ dont j'avais parlé.
Parce que s'il faut traiter tous les mails reçus, c'est vite l'enfer ! S'il y en a un ou deux ça va, mais s'il y en a des centaines, voire des milliers...


RE: emailing, comment savoir si le mail existe toujours ou non? - ToraTora - 04-07-2011

Oui, une fonction qu'on reçoit les bounce back, il faut les vérifier 1 à 1...

La méthode de Sephi-Chan me paraît plus adaptée, mais on ne peux pas vraiment savoir si l'email n'a jamais été ouvert ou bien si il n'existe plus.
Il faudrait définir un temps maximum de réponse avant de considérer l'email comme "invalide".

La bounce back lui arrive quasiment immédiatement après l'envoi à une adresse inexistante.


RE: emailing, comment savoir si le mail existe toujours ou non? - Argorate - 04-07-2011

Je me suis sans doute mal exprimé, le fait de mettre une image dans le mail j'ai déjà prévu de la faire mais a des fin de statistiques (cb de personne ont lu le mail), mais ça ne pas pas être une solution dans le cas présent.
Si une adresse mail n'existe pas, on reçois un mail nous le disant en effet, mais ce n'est pas exploitable. j'entends par là, que j'aimerais faire un script qui puisse supprimer les mails qui n'existe plus de ma bdd.

Mais comme je le pensais, Toratora me le confirme,
if(!mail()) ne règle pas la question (sinon se serait trivial et je ne vous ennuierais pas avec ça ^^)
Donc, y a t-il une solution exploitable? ou es-ce qu'on doit le faire un par un? Confused


RE: emailing, comment savoir si le mail existe toujours ou non? - ToraTora - 04-07-2011

Une petite recherche et j'ai trouvé 2-3 trucs :

http://www.weberdev.com/get_example.php3?ExampleID=4015
http://davidwalsh.name/gmail-php-imap

Je ne sais pas ce que ça vaut.

Regarde du côté de IMAP : http://www.php.net/manual/fr/book.imap.php
Tu dois pouvoir te faire un script qui va se logguer sur ta boite mail et analyser tes messages Wink


RE: emailing, comment savoir si le mail existe toujours ou non? - Viciousity - 04-07-2011

Ben le système de Sephi couplé à un timestamp(qui permet de vérifier à l'aide d'un cron par exemple si le mail n'a pas été lu depuis X temps, déterminant ainsi si une adresse est active ou pas). Dans le cas d'une adresse inactive depuis un mois, on envoie un mail qui oblige l'utilisateur a confirmer celui-ci et on l'"empeche" de se connecter tant qu'il n'a pas rentré une adresse valide.
Si au bout de 2 mois il n'a toujours pas répondu ou changer d'email, on la supprime de la BDD Smile