Il semble que dernièrement, je suis vraiment ennuyé
. Il ya quelques jours, en lisant un article, je suis revenue à expliquer comment faire ces systèmes de messagerie instantanée qui sont habituellement utilisés pour vous inscrire à des sites Web et ensuite vous envoyer du spam
. L'idée semblait très approprié pour donner un exemple concret de ce que nous avons vu lors d' autres services publics à un serveur de messagerie et que je suis venu il ya quelques mois, ce qui est un élément de projet devient .
L'idée est donc de créer un système qui, sans aucune inscription vous permet de créer un compte e-mail et recevoir et lire des emails sur elle pendant environ une heure, après quoi le compte sera autodestruction et tous e-mails seront retournés. Dans notre application, nous avons deux options pour créer le compte, aléatoires ou de la coutume, je ne pense pas que nous avons besoin de plus d'explications. Une fois que vous utilisez un compte, vous pourrez y revenir plus tard quand vous en avez besoin de recréer un compte personnalisé avec le même utilisateur. Ceci est utile, par exemple, que vous vous souvenez du mot de passe que vous avez utilisé pour vous inscrire à ce site de téléchargement de films et ne me souviens plus
.
Ce que nous devons
- Linux Server avec Qmail comme MTA.
- Apache, PHP et MySQL.
- Mimedecode poire : pour traiter le courrier entrant avec PHP.
- A superchula modèle de FreeCssTemplates
- Jquery : pour tout ce qui est ajax et javascript
- ZeroClipboard : Copier et coller automatiquement
- Jquery ScrollTo : pluggin pour faire défiler automatiquement.
- Une image de «chargement» pour les actions Ajax Vous paramétrez ici .
- Dictionnaires mots «au hasard». Ici sont quelques-uns.
- Adodb (facultatif) pour un accès de base de données.
Ça y est, vous avez juste à mettre les morceaux ensemble correctement.
Préparation Qmail
Notre première étape, avant d'arriver à des questions purement web, va configurer correctement le serveur de messagerie pour notre but. Pour ce faire, nous devons créer un utilisateur du système pour recevoir tout le courrier adressé à un domaine. Cela peut être fait comme suit:
- adduser-g users-s / dev / null usaytirame
- usaytirame passwd UNACLAVESUPERCOMPLICADA
Ajouter notre hôte dans:
/ Var / qmail / control / rcpthosts
- usaytira.me
Et l'utilisateur que les mails iront:
/ Var / qmail / control / virtualdomains
- usaytira.me: usaytirame
Redémarrage Qmail se les e-mails envoyés à n'importe quel compte de domaine vont à la boîte aux lettres de l'utilisateur spécifié, soit foo [at] usaytira.me.
Mais nous ne voulons pas les emails vont à la boîte aux lettres de l'utilisateur, mais simplement transformés. Pour éditer ce fichier:
/ Accueil / usaytirame. / Qmail-default
- | Preline / usr / bin / php / home / usaytirame / procesa.php
Seulement cette ligne. Avec cette commande pour rediriger les messages entrants reçoivent un script où nous pouvons récupérer et de réutiliser à volonté comme on le verra ci-dessous.
Traitement des emails entrants
Commençons par la création d'une base de données où nous stockons les e-mails reçus. Puisque nous voulons accéder au courrier adressé à chaque compte de façon indépendante, nous allons faire deux tables, un (e-mails), le tableau de maître à utiliser comme comptes de messagerie sont créés et l'autre (e) stocker les e-mails reçus iront à chacun des ces comptes. La structure serait plus ou moins comme suit:
- CREATE TABLE IF NOT EXISTS `emails` (
- ) NOT NULL auto_increment, `IdEmail` int (11) NOT NULL AUTO_INCREMENT,
- `Date` timestamp NOT NULL par défaut CURRENT_TIMESTAMP le jour CURRENT_TIMESTAMP,
- ) NOT NULL, `Email` varchar (255) NOT NULL,
- ) NOT NULL, `Ip` varchar (15) NOT NULL,
- , PRIMARY KEY (`IdEmail`),
- KEY `email` (`email`)
- MyISAM DEFAULT CHARSET= utf8 AUTO_INCREMENT= 1 ; ) MOTEUR = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
- CREATE TABLE IF NOT EXISTS `e` (
- 11 ) NOT NULL auto_increment, `Id` int (11) NOT NULL AUTO_INCREMENT,
- ) NOT NULL, `IdEmail` int (11) NOT NULL,
- ) NOT NULL, `De` varchar (255) NOT NULL,
- ) NOT NULL, `A` varchar (255) NOT NULL,
- ) NOT NULL, `Subject` varchar (255) NOT NULL,
- ) NOT NULL, `Date` varchar (255) NOT NULL,
- `Corps` text NOT NULL,
- Fullmail `` text NOT NULL,
- ` ) , PRIMARY KEY (`id`),
- IdEmail clé `(` IdEmail `)
- MyISAM DEFAULT CHARSET= utf8 AUTO_INCREMENT= 1 ; ) MOTEUR = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
Je pense qu'il est suffisamment descriptive. Le champ de la date des emails servira à contrôler la durée maximum de 60 minutes.
Eh bien, nous avons tout préparé. Voyons comment nous traitons les e-mails.
/ Accueil / usaytirame / procesa.php
- "mimeDecode.php" ) ; include ("mimeDecode.php");
- 'include_bodies' ] = true ; $ Params ['include_bodies'] = true;
- 'decode_bodies' ] = true ; $ Params ['decode_bodies'] = true;
- 'decode_headers' ] = true ; $ Params ['decode_headers'] = true;
- 'input' ] = $email ; $ Params ['input'] = $ email;
- ( $params ) ; $ Structure = Mail_mimeDecode :: decode ($ params);
- ( trim ( $structure -> headers [ 'subject' ] ) ) ; $ Subject = quoted_printable_decode ( garniture ($ Structure -> têtes ['subject']));
- ( trim ( $structure -> headers [ 'date' ] ) ) ; $ DDate = quoted_printable_decode ( garniture ($ Structure -> têtes ['date']));
- ( trim ( $structure -> headers [ 'from' ] ) ) ; De = quoted_printable_decode ( garniture ($ Structure -> têtes ['from']));
- ( trim ( $structure -> headers [ 'to' ] ) ) ; $ To = quoted_printable_decode ( garniture ($ structure -> têtes ['à']));
- [ 1 ] ; $ To = $ p [1];
Nous avons préparé la première partie du traitement. De là, nous soulignons:
Avec cette lecture de l'entrée standard le contenu des emails. N'oubliez pas que nous ne sommes pas une application web mais dans un script exécuté sur la console du système.
L'autre ligne importante est:
- ( $params ) ; $ Structure = Mail_mimeDecode :: decode ($ params);
Avec elle, nous recevons le courrier électronique et la structure des processus distinct dans un tableau associatif avec les différents paramètres. Il aidera beaucoup à voir le contenu de ce tableau:
A ce stade, nous pouvons faire un test. Nous avons besoin de l'intégralité du contenu d'un courriel, nous pouvons supprimer de votre client de messagerie ou le serveur lui-même.
- prueba.eml chat | / home / usaytirame / procesa.php
Si tout va bien, nous allons voir sur le tableau avec la structure de e l'écran.
Je ne détaillerai pas l'ensemble du processus autant allonger l'article. Venez à l'étape suivante:
- . $conn -> quote ( $to ) ; $ Query = "select IdEmail des e-mails où = email" $ conn -> quote ($ to).;
- -> Execute ( $query ) ; $ Rs = $ conn -> Execute ($ query);
- $rs -> recordcount ( ) == 0 ) { if ($ rs -> recordcount () == 0) {
- { Else {}
- -> fields [ 'idEmail' ] ; $ IdEmail = $ rs -> champs ['IdEmail'];
- $structure ) ; $ Content = get_content ($ la structure);
- $ Query = "INSERT INTO poste
- (IdEmail, à partir de, pour, sujet, date, corps, fullmail)
- VALEURS
- ($ IdEmail,
- -> Quote ( $from ) . ", "$ Conn -.> Citation (dollars)».
- -> Quote ( $to ) . ", "$ Conn -.> Citation (dollars)».
- -> Quote ( $subject ) . ", "$ Conn -.> Citation ($ subject)."
- -> Quote ( $ddate ) . ", "$ Conn -.> Citation (ddate $)."
- -> Quote ( $content ) . ", "$ Conn -.> Citation ($ content)."
- -> Quote ( $email ) . ")" ; ". $ Conn -> Citation ($ email).") ";
- -> Execute ( $query ) ; $ Rs = $ conn -> Execute ($ query);
- }
Dans la première partie de la vérification de script si le compte auquel il est destiné l'email existent dans notre base de données, sinon surtout, retourner un code 100 indique que qmail être retourné par courrier car il n'y a pas d'utilisateur.
Si le compte existe recueillir le corps du message. Je le fais avec fonction get_content qui analyse la structure de l'email et renvoie le contenu. Cette partie, je m'en remets à vous. Fondamentalement, c'est de vérifier les pièces que vous pouvez avoir un e-mail et retourner ce que nous jugeons approprié. Un détail très important à noter est le codage à la fois du courrier électronique et de notre base de données et l'application Web. Dans mon cas, les deux derniers sont en UTF-8, donc je devrais convertir tout le texte dans le courriel pour le même encodage. La structure qui avait initialement paramètres tableau indiquera le charset dans lequel l'email vient. Les fonctions de conversion PHP peuvent vous être utiles: iconv, utf8_encode, etc.Finalmente introduisent tous les champs e-mail dans la base de données.
Vous pouvez revenir en arrière pour essayer de traiter le message de test que nous avons fait avant. N'oubliez pas d'ajouter l'enregistrement de la table pour sauver des emails à la poste, si le compte n'existe pas. Une fois que vous exécutez à partir de la ligne de commande et vous pouvez essayer de vous envoyer un e-mail réelle
.
L'application Web
Ne pensez pas que le site lui-même besoin de beaucoup d'explication. Nous avons déjà tous les éléments prêts, nous ajoutons seulement les formes pour créer un compte email (aléatoire ou personnalisé) et, avec un peu de chargement d'Ajax aller mails dès qu'ils arrivent. Pas plus d'un tour.
Ajouter, cependant, quelques précisions intéressantes.
Pour créer des comptes aléatoires, au lieu d'utiliser une séquence aléatoire de chiffres et de lettres, ce qui aboutirait à quelque chose d'inintelligible, utiliser des dictionnaires qui ont commenté ci-dessus. L'importation d'une table de la base de données et nous venons de trouver au hasard un mot qui n'est pas encore utilisé comme compte de messagerie, simple et très puissant et vous offrent des comptes lisibles visuellement et significative.
Comme dans n'importe quelle autre application accessible au public, ajouter une sorte de mécanisme de sécurité. Dans mon cas, j'ai la mise en œuvre d'une liste noire d'adresses IP. Chaque fois que vous créez une mise à jour de compte dans une base de données le nombre de comptes qui ont été créés à partir de cette adresse IP, si vous dépassez la limite que nous jugeons appropriée, que la propriété intellectuelle est passée à la table de liste noire et quand vous essayez de créer un nouveau compte pas vous quitter.
Nous manquons d'une chose: les comptes de suppression qui sont plus d'une heure. Très simple, une tâche dans le cron pour exécuter un script qui lance une requête à la base de données qui élimine les comptes (e-mails et associés) qui ont été créés plus de 60 minutes.
Enfin, j'ai ajouté la possibilité de redémarrer les 60 minutes de temps, il suffit de mettre à jour l'horodatage de la base de données et des effets visuels à plier et déplier les messages en utilisant jQuery.
Pas beaucoup plus, à environ cinq heures ont fait une demande et la course.
Conclusions
En conclusion, le même que celui que j'ai fait il ya quelques mois avec le premier projet . La copie que c'est parce qu'il est tout aussi valable.
Eh bien, toutes ces choses et pourquoi?. C'est simple, vous pouvez donc voir que la technologie est aujourd'hui disponible pour tout le monde, c'est simple et rapide pour créer un projet sur Internet, il est tout à chaque coin de rue, la technologie n'est pas important, ce qui compte est de savoir comment déplacer la technologie pour monétiser ce produit et faire un profit.
Maintenant, j'ai mon projet en cours superchulo ne m'a coûté environ 5 heures. J'ai mis un peu d'Adsense ici et là. Et maintenant? Pour attendre que les gens d'entrer et de faire de moi un millionnaire?
Il est beaucoup plus compliqué que ça comme vous le savez tous, vous devez d'abord avoir une grand-messe de l'utilisateur qui donne du mouvement au projet et ensuite vous devez obtenir la plupart sont des gens normaux, des gens non techniques, les utilisateurs qui ne paient pas pour rien ou cliquez sur la publicité
.
Aujourd'hui, sur Internet, comme dans toute entreprise, les techniques de marketing et de vente sont beaucoup plus importants que la technologie elle-même, c'est dur à admettre, mais vrai. Il ne sert à rien d'avoir le meilleur produit dans le monde entier si vous n'obtenez pas les gens à utiliser et laisser de l'argent, plaine. Si vous avez les compétences nécessaires pour déplacer l'entreprise, ne vous inquiétez pas, la technologie vous donne une partenaire pour une somme modique, mais mettre dans les mains de toute autre stratégie de vente de votre entreprise n'est pas aussi évident n'est-ce pas?.
J'espère vous servir quelque chose de l'article. Je voulais montrer essentiellement comment utiliser certaines bibliothèques, vous pouvez obtenir sans frais que vous pouvez faire quelque chose de vraiment utile et fonctionnel avec très peu d'effort. Bien sûr, vous dessinez une idée.
Désolé pour le rouleau
Dans le coût final m'a beaucoup plus d'écrire l'article qui les respectent.
Nous aurions pu ajouter une option que j'ai vu là-bas est de créer un compte automatiquement chaque fois que vous entrez dans un e-mail à un compte qui n'existe pas, mais il serait de créer des comptes pour tout le spam que nous recevons, donc je préfère ne pas le faire. Si vous vouliez faire, je crois que je sais comment.
















