Es scheint, dass in letzter Zeit bin ich sehr gelangweilt icon razz Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP . Vor ein paar Tagen, einen Artikel zu lesen, kam ich zurück, um zu erklären, wie diese Instant-Mail-Systeme sind in der Regel verwendet, um bei uns registrieren und dann bist du nicht Spam versenden icon razz Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP . Die Idee schien sehr geeignet, um ein praktisches Beispiel für etwas, was ich sah, während auf zu geben , um einen Mail-Server anderen Versorgungsunternehmen und, wie ich vor ein paar Monaten, die ein Element wird Projektes war .

usaytirame1 Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP

Die Idee ist es daher, ein System, das ohne Registrierung können Sie eine E-Mail-Konto einrichten und E-Mails empfangen und lesen Sie etwa eine Stunde, nach welcher Zeit die Rechnung selbst und zerstört alle schaffen E-Mails werden nicht zurückgegeben. In unserer Anwendung haben wir zwei Optionen für die Erstellung statistischer oder benutzerdefiniertes Konto, glaube ich nicht, wir brauchen mehr Erklärungen. Wenn Sie ein Konto verwenden, können Sie später zurück, wenn Sie es brauchen wieder eine benutzerdefinierte Konto mit dem gleichen Benutzer. Dies ist nützlich, zum Beispiel, dass du dir das Passwort verwendet werden, um auf dieser Website registrieren, Filme herunterzuladen und erinnern Sie sich nicht mehr erinnern icon wink Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP .

Was wir brauchen

  • Linux-Server mit Qmail als MTA.
  • Apache, PHP und MySQL.
  • Pear mimedecode : auf eingehende E-Mails mit PHP verarbeiten.
  • Eine Vorlage superchula FreeCssTemplates
  • JQuery : für alles, was AJAX und Javascript
  • ZeroClipboard : Kopieren Sie automatisch
  • JQuery ScrollTo : pluggin automatisch nach unten scrollen.
  • Ein Bild der "Laden" für die Aktionen, die Sie anpassen ajax hier .
  • Wörterbücher "random" Worte. Hier sind ein paar.
  • Adodb (optional) für den Zugriff auf Datenbank.

Das ist es, man muss nur die Teile richtig zusammenzusetzen.

Vorbereiten Qmail

Unser erster Schritt, bevor wir rein Web-Themen ordnungsgemäß konfiguriert den Mail-Server für unsere Zwecke zu bekommen. Um dies zu tun, müssen wir ein System, das alle Benutzer Mail an eine Domäne adressiert erhält erstellen. Dies kann wie folgt geschehen:

  1. adduser-g users-s / dev / null usaytirame
  2. passwd usaytirame UNACLAVESUPERCOMPLICADA

Fügen Sie unsere hostname:

/ Var / qmail / control / rcpthosts

  1. usaytira.me

Und der Benutzer, die in der Post gehen wird:

/ Var / qmail / control / virtual

  1. usaytira.me: usaytirame

Neustart Qmail erhalten die E-Mails für alle Domain-Konto gesendet gehen an das Postfach des Benutzers angezeigt, dh foo [at] usaytira.me.

Aber wir wollen nicht, dass die E-Mails an die Mailbox eines Benutzers gehen, sondern einfach verarbeitet. Um diese Datei zu bearbeiten:

/ Home / usaytirame /. Qmail-default

  1. | PreLine / usr / bin / php / home / usaytirame / procesa.php

Nur diese Linie. Mit diesem Befehl erhalten wir umleiten eingehende E-Mail auf ein Skript, in dem wir wieder und wieder verwenden am Willen, wie unten diskutiert.

Verarbeitung von eingehenden E-Mails

Beginnen wir mit der Erstellung einer Datenbank, wo wir die empfangenen E-Mails zu speichern. Da wir für den Zugriff auf E-Mail an jedes Konto angesprochen unabhängig möchten, werden wir zwei Tabellen, eine (E-Mails), die Master-Tabelle als die E-Mail-Konten, die erstellt werden, und die andere (e) verwenden Speichern der empfangenen E-Mails werden zu jedem gehen diese Konten. Wäre die Struktur mehr oder weniger die folgenden sein:

  1. CREATE TABLE IF NOT EXISTS `` E-Mails (
  2. ) NOT NULL auto_increment, IdEmail `` int (11) NOT NULL auto_increment,
  3. `Datum` timestamp NOT NULL Standard CURRENT_TIMESTAMP auf Update CURRENT_TIMESTAMP,
  4. ) NOT NULL, E-Mail `` varchar (255) NOT NULL,
  5. ) NOT NULL, `Ip` varchar (15) NOT NULL,
  6. , PRIMARY KEY (`` idEmail)
  7. KEY `email` (`E`)
  8. MyISAM DEFAULT CHARSET= utf8 AUTO_INCREMENT= 1 ; ) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;
  9. CREATE TABLE IF NOT EXISTS `e` (
  10. 11 ) NOT NULL auto_increment, `ID` int (11) NOT NULL auto_increment,
  11. ) NOT NULL, IdEmail `` int (11) NOT NULL,
  12. ) NOT NULL, `Aus` varchar (255) NOT NULL,
  13. ) NOT NULL, `Um` varchar (255) NOT NULL,
  14. ) NOT NULL, `Betreff` varchar (255) NOT NULL,
  15. ) NOT NULL, `Datum` varchar (255) NOT NULL,
  16. `Body` text NOT NULL,
  17. Fullmail `` text NOT NULL,
  18. ` ) , PRIMARY KEY (`id`),
  19. IdEmail KEY `` (`` idEmail)
  20. MyISAM DEFAULT CHARSET= utf8 AUTO_INCREMENT= 1 ; ) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;

Ich denke, es ist aussagekräftig genug. Das Feld E-Mails Datum wird dazu dienen, die Höchstdauer 60 Minuten zu kontrollieren.

Denn wir haben schon alles fertig. Mal sehen, wie wir die E-Mails zu verarbeiten.

/ Home / usaytirame / procesa.php

  1. "mimeDecode.php" ) ; include ("mimeDecode.php");
  2. ( "php://stdin" ) ; $ = E-Mail -Datei ("php :/ / stdin");
  3. ( "" , $email ) ; E-Mail-$ = implode ("", $ email);
  4. 'include_bodies' ] = true ; $ Params ['include_bodies'] = true;
  5. 'decode_bodies' ] = true ; $ Params ['decode_bodies'] = true;
  6. 'decode_headers' ] = true ; $ Params ['decode_headers'] = true;
  7. 'input' ] = $email ; $ Params ['Eingabe'] = $ email;
  8. ( $params ) ; $ = Struktur Mail_mimeDecode :: decode ($ params);
  9. ( trim ( $structure -> headers [ 'subject' ] ) ) ; $ Subject = quoted_printable_decode ( trim ($-Struktur -> headers ['Betreff']));
  10. ( trim ( $structure -> headers [ 'date' ] ) ) ; $ Ddate = quoted_printable_decode ( trim ($-Struktur -> headers ['date']));
  11. ( trim ( $structure -> headers [ 'from' ] ) ) ; $ Von = quoted_printable_decode ( trim ($-Struktur -> headers ['von']));
  12. ( trim ( $structure -> headers [ 'to' ] ) ) ; $ To = quoted_printable_decode ( trim ($-Struktur -> headers ['bis']));
  13. ereg ( "<(.*)>" , $to , $p ) ) if ( ereg ("<(. *)>", $ zu, $ p))
  14. [ 1 ] ; Um $ = $ p [1];
  15. ( $to ) ; $ To = strtolower ($ auf);

Wir haben den ersten Teil der Verarbeitung hergestellt. Von hier hervorheben:

  1. ( "php://stdin" ) ; $ = E-Mail -Datei ("php :/ / stdin");

Mit diesem von der Standardeingabe lesen E-Mail-Inhalte. Denken Sie daran, dass wir nicht in einer Web-Anwendung, sondern einen Lauf auf der Systemkonsole Skript.

Der andere wichtige Zeile ist:

  1. ( $params ) ; $ = Struktur Mail_mimeDecode :: decode ($ params);

Mit ihm erhalten wir die E-Mail-und Trennverfahren Struktur in einem assoziativen Array mit den verschiedenen Parametern. Es wird helfen, eine Menge, um den Inhalt des Arrays finden Sie unter:

  1. $structure ) print_r ($-Struktur)

An dieser Stelle können wir einen Test zu tun. Wir brauchen den gesamten Inhalt einer E-Mail, können wir es von Ihrem Mail-Client oder dem Server selbst zu entfernen.

  1. prueba.eml cat | / home / usaytirame / procesa.php

Wenn alles gut geht werden wir auf dem Bildschirm sehen, eine Struktur-Array mit der Post.

Das werde ich nicht ausführlich der gesamte Prozess so viel verlängern Sie den Artikel. Kommen Sie zum nächsten Schritt:

  1. . $conn -> quote ( $to ) ; . $ Query = "select idEmail aus E-Mails, wo email = '$ conn -> quote ($ auf);
  2. -> Execute ( $query ) ; $ Rs = $ conn -> Ausführen ($ query);
  3. $rs -> recordcount ( ) == 0 ) { if ($ rs -> Record () == 0) {
  4. 100 ) ; Ausgang (100);
  5. { Else {}
  6. -> fields [ 'idEmail' ] ; IdEmail $ = $ rs -> Felder ['idEmail'];
  7. $structure ) ; $ Content = get_content ($-Struktur);
  8. $ Query = "insert into Post
  9. (IdEmail, von, nach, Betreff, Datum, Körper, fullmail)
  10. WERTE
  11. ($ IdEmail,
  12. -> Quote ( $from ) . ", ". $ Conn -> Zitat ($ aus)."
  13. -> Quote ( $to ) . ", ". $ Conn -> Zitat ($ auf)."
  14. -> Quote ( $subject ) . ", ". $ Conn -> Zitat ($ subject)".
  15. -> Quote ( $ddate ) . ", ". $ Conn -> Zitat ($ ddate)."
  16. -> Quote ( $content ) . ", ". $ Conn -> Zitat ($ content)."
  17. -> Quote ( $email ) . ")" ; "$ Conn -> Zitat ($ email)..") ";
  18. -> Execute ( $query ) ; $ Rs = $ conn -> Ausführen ($ query);
  19. }

Im ersten Teil des Skripts überprüfen, ob das Konto, auf das die E-Mail soll in unserer Datenbank vorhanden ist, aber, wichtiger ist, geben einen 100-Code, qmail erzählt per Post zurückgeschickt werden, da der Benutzer nicht existiert.

Wenn das Konto vorhanden sammeln die Körper der Nachricht. Ich tue es mit get_content-Funktion, die die Struktur der E-Analysen und gibt den Inhalt. Dieser Teil überlasse ich es Ihnen. Grundsätzlich beinhaltet die Überprüfung der verschiedenen Parteien können eine E-Mail zu haben und zurückkehren, was wir für angemessen halten. Ein sehr wichtiges Detail zu beachten ist die Codierung der E-Mail als auch unserer Datenbank und der Web-Anwendung. In meinem Fall die letzten beiden sind in UTF-8, so dass ich konvertieren alle Text in der E-Mail an die gleiche Codierung. Die Struktur hatte zunächst ein Array-Parameter wird die Zeichensatz in der nächsten E-Mail anzugeben. Die PHP-Konvertierungsfunktionen finden Sie vielleicht nützlich: iconv, utf8_encode, etc.Finalmente wir alle E-Mail-Felder in der Datenbank einzuführen.

Sie können zurück zu gehen, um zu versuchen, um den Test E-Mail zu verarbeiten, wie wir zuvor. Denken Sie daran, den Rekord von E-Mails der Tabelle hinzufügen, um die Mail zu speichern, wenn das Konto nicht existiert. Sobald Sie von der Kommandozeile kann man laufen und versuchen, eine echte E-Mail senden icon smile Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP .

Die Web-Anwendung

Ich glaube nicht, dass die eigentliche Web-Teil benötigen viel Erklärung. Wir haben bereits alle Elemente vorbereitet, die wir nur in den Formen E-Mail-Konto zu erstellen (random oder benutzerdefiniert), und mit ein wenig ajax Laden meine E-Mails, wie sie ankommen. Es gibt keinen Trick.

Ich will aber hinzufügen, einige interessante Einblicke.

Um die zufällige Konten zu erstellen, anstatt eine zufällige Folge von Zahlen und Buchstaben, die in etwas Unverständliches führen würde, verwenden Sie Wörterbücher, die oben kommentiert. Die Import-Tabelle in einer Datenbank und zufällig nur noch ein Wort, das noch nicht als E-Mail-Konto verwendet zu finden, sehr einfach und visuell atemberaubend, wie Sie aussagekräftige und lesbare Konten.

Wie in jedem anderen öffentlich zugänglichen Anwendung fügen Sie eine Art Sicherheitsmechanismus. In meinem Fall habe ich getan Umsetzung eine schwarze Liste von IP-Adressen. Jedes Mal, wenn ein Update Konto wird in einer Datenbank erstellt die Anzahl der Konten, die von dieser IP erstellt worden sind, wenn Sie diese Grenze passieren unserem Ermessen, dass die IP auf der schwarzen Liste Tabelle übergeben und wenn Sie versuchen, einen neuen Account zu erstellen Sie werden nicht scheitern.

Uns fehlt nur eins: Konten, die mehr als eine Stunde sind, löschen. Sehr einfach, eine Aufgabe, in der CRON , die ein Skript, das eine Abfrage an die Datenbank startet läuft beseitigt die Konten (und ihre zugehörigen e), die vor mehr als 60 Minuten erstellt wurden.

Schließlich habe ich noch die Möglichkeit, die 60 Minuten Zeit, neu zu starten, einfach durch die Aktualisierung der Zeitstempel der Datenbank und einige visuelle Effekte mit jQuery zu falten und entfalten sich die Nachrichten.

Nicht viel mehr, in etwa fünf Stunden haben wir die Anwendung und läuft.

Schlussfolgerungen

Abschließend habe ich das gleiche vor ein paar Monaten mit dem ersten Projekt . Die Kopie, die die gleiche ist, wie sie gültig ist.

Nun, all dieses Zeug und warum?. Ganz einfach, so kann man sehen, dass heute die Technik ist für jeden verfügbar, ist einfach und schnell Internet, ein Projekt zu erstellen, gibt es an jeder Ecke, die Technik ist nicht wichtig, was zählt, ist, wie bewegen, um das Produkt-Technologie zu monetarisieren und einen Gewinn von ihm.

Ich habe bereits meine superchulo Projekt läuft, habe ich nur kosten etwa 5 Stunden. Ich habe einige Adsense hier und da setzen. Und was jetzt? Zu warten, für die Menschen zu geben und mache mir einen Millionär? icon razz Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP Es ist viel komplizierter, als dass, wie Sie alle wissen, müssen Sie zunächst eine hohe Massenbewegung, die den Nutzern das Projekt haben und müssen dann bekommen die meisten von ihnen sind normale Menschen, nicht technische Menschen, fortgeschrittene Benutzer, die nicht für etwas bezahlen, oder in der Werbung klicken icon razz Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP .

Heute, im Internet, wie in jedem Geschäft, Marketing-und Verkaufstechniken sind viel wichtiger als die Technologie selbst, ist es schwer, zuzugeben, aber wahr. Kein Einsatz, das beste Produkt in der ganzen Welt haben, wenn Sie nicht bekommen, die Menschen, um Geld zu verwenden und zu verlassen, so klar. Wenn Sie die erforderlichen Kenntnisse, um das Geschäft zu bewegen, keine Sorge, Technologie bringt Ihnen die jeder Partner für eine kleine Gebühr, aber in den Händen eines anderen gesamte Vertriebsstrategie Ihres Unternehmens ist nicht so klar gestellt, nicht wahr?.

Ich hoffe, dass Sie etwas den Artikel dienen. Ich wollte zeigen, im Grunde, wie mit einigen Bibliotheken, die Sie ohne Kosten bekommen Sie etwas wirklich nützlich und funktional mit sehr wenig Aufwand zu tun. Finden Sie, dass jede Idee.

Sorry für die Rolle icon razz Nuevo proyecto en 5 horas: UsayTira.me, direcciones de correo de usar y tirar explicado paso a paso qmail PHP Am Ende ist es mir mehr kosten, um den Artikel setze ich es zu schreiben.

Wir könnten eine Option, die ich aus gesehen gibt es ein Konto erstellt automatisch jedes Mal eine E-Mail geben Sie auf ein Konto, das nicht existiert, würden wir das Erstellen von Konten für all die Spam erhalten wir hinzugefügt haben, so dass ich lieber nicht. Wenn Sie wollten Sie denken, Sie wissen, wie.