Wir erweitern die Möglichkeiten von PHPMailer
Übersetzung des Artikels.
In diesem Artikel möchte ich erzählen, wie man IP-Adresse von Absender als Parameter dem PHPMailer übergeben kann und als kleine Ergänzung fixen wir ein sehr unangenehmer Bug in Mailer. Uns wird nur Arbeit mit SMTP interessieren.
Der Package PHPMailer besteht aus der Frontend-Klasse PHPMailer und mehreren Plug-Ins-Klassen, die verschiedene Feature realisieren, wie z.B. POP3-Identifizierung.
Der Frontend stellt zur Verfügung Methoden für Parameter-Übergabe(localhost, return-path, AddAdress(), body, from usw.), Art von Sendung und Identifizierung(SMTPSecure, SMTPAuth, IsMail(), IsSendMail(), IsSMTP() etc.) und natürlich die Methode Send().
Nachdem alle Parameter festgelegt sind, wird die Methode send() aufgerufen, die abhängig von diesen Parameter eine oder andere Methode benutz. Weil uns nur SMTP interessiert, werden wir in Weiterem nur den Plug-In SMTP aus Package class.smtp.php betrachten.
Wenn die Methode PHPMailer::IsSMTP() benutzt wird, ruft PHPMailer::Send() die protected Methode PHPMailer::SmtpSend($header, $body). PHPMailer::SmtpSend() versucht mit dem SMTP-Server von Empenger eine Verbindung herzustellen( wenn eine Mail schon gesendet wurde, wird der Schritt überspringen) und SMTP-Session zu initialisieren (HELLO/EHLO, MAIL TO, RCPT, DATA usw.). Die Verbindung mit dem Server passiert in der Methode PHPMailer::SmtpConnect(). Weil ein Domain mehrere MX-Beitrage haben kann, versucht die Methode PHPMailer::SmtpConnect() Reihe nach mit jedem SMPT-Server, der in Konfiguration von PHP-Mailer angegeben ist, eine Verbindung herzustellen.
Weiterlesen
In diesem Artikel möchte ich erzählen, wie man IP-Adresse von Absender als Parameter dem PHPMailer übergeben kann und als kleine Ergänzung fixen wir ein sehr unangenehmer Bug in Mailer. Uns wird nur Arbeit mit SMTP interessieren.Architektur von PHPMailer
Der Package PHPMailer besteht aus der Frontend-Klasse PHPMailer und mehreren Plug-Ins-Klassen, die verschiedene Feature realisieren, wie z.B. POP3-Identifizierung.
Der Frontend stellt zur Verfügung Methoden für Parameter-Übergabe(localhost, return-path, AddAdress(), body, from usw.), Art von Sendung und Identifizierung(SMTPSecure, SMTPAuth, IsMail(), IsSendMail(), IsSMTP() etc.) und natürlich die Methode Send().
Nachdem alle Parameter festgelegt sind, wird die Methode send() aufgerufen, die abhängig von diesen Parameter eine oder andere Methode benutz. Weil uns nur SMTP interessiert, werden wir in Weiterem nur den Plug-In SMTP aus Package class.smtp.php betrachten.
Wenn die Methode PHPMailer::IsSMTP() benutzt wird, ruft PHPMailer::Send() die protected Methode PHPMailer::SmtpSend($header, $body). PHPMailer::SmtpSend() versucht mit dem SMTP-Server von Empenger eine Verbindung herzustellen( wenn eine Mail schon gesendet wurde, wird der Schritt überspringen) und SMTP-Session zu initialisieren (HELLO/EHLO, MAIL TO, RCPT, DATA usw.). Die Verbindung mit dem Server passiert in der Methode PHPMailer::SmtpConnect(). Weil ein Domain mehrere MX-Beitrage haben kann, versucht die Methode PHPMailer::SmtpConnect() Reihe nach mit jedem SMPT-Server, der in Konfiguration von PHP-Mailer angegeben ist, eine Verbindung herzustellen.
Weiterlesen
-
easyman,
- 19 Mai 2012, 22:48
- Kommentar schreiben
- 0
Java: Magic of Reflection, Teil 2
Das ist die Fortsetzung des Artikels.In diesem Artikel wird es hauptsächlich um ClassLoader gehen. Eigentlich ist die Klasse der Kern von Reflection in Java. ClassLoader ist abstract, es gibt aber vile Klassen, die ihn erweitern. Jedes Mal, wenn eine Class-Datei geladen wird, weil man ein Kostruktor oder statische Methode aufruft, wird einer von der ClassLoaders benutzt.
Es gibt eine standarte Variante von ClassLoader: System Loader. System Loader wird verwendet, wenn Java-Programm mit der Zeile „java name_der_main_klasse“ startet. Der Loader realisiert den Standartalgorithmus für Loaden aus Ordners und Jar-Dateien, die in CLASSPATH angegeben sind und auch die Jar-Dateien, die ein Teil von Java – JDK/JRE sind.
Eine der bemerkenswertesten Eigenschaften von Java ist es, dass man den System ClassLoader selbst realisieren kann und statt den gefaulten verwenden. Ganz gutes Beispiel dafür sind die Java-Applets. Alle Klassen von Applets und die Klassen, die sie benötigen, werden von Server mit Hilfe eines „eigenen“ System ClassLoaders geladen.
Wenn Sie einen eigenen ClassLoader implementieren, bekommen Sie Möglichkeit Ihre Klassen aus verschiedenen Stellen laden, nicht nur aus diesen, die in CLASSPATH angegeben sind, sondern auch aus einem speziellem Ordner in Dateisystem, aus Datenbank oder aus Internet. Sie können z.B. Protokolieren, welche Klassen geladen werde, um z.B. herauszufinden, welche Klassen überhaupt benutz werden. Über diese Möglichkeit können Sie hier lesen.
Weiterlesen
-
schroeder,
- 18 Mai 2012, 17:08
- Kommentar schreiben
- 0
Inline Validierung in Web-Formularen - Interface Design
Übersetzung des Artikels
Web Formulare sind nicht besonders gute Konversationsgenies. Sie stellen dem Nutzer eine Reihe von Fragen und warten dann bis der Nutzer letztendlich alle Fragen beantwortet und das Formular eine Auswertung vornehmen und eine Rückmeldung ausgeben kann. Wenn Sie sich also für ein besonders soziales Netzwerk registrieren oder eine Registrierung auf einer E-Commerce Seite durchführen, ist es fast immer ein Monolog.

Verantwortlich für einen schlechten Dialog eines Formulars ist oft, die Art und Weise wie es entwickelt bzw. implementiert wurde. Web Formulare die ein veraltetes Submit-And-Refresh Modell nutzen, geben solange keine Rückmeldung bis man tatsächlich den Absende bzw. Submit-Button gedrückt hat. Aber das muss nicht so sein. Echtzeit Inline Validierungen können den Nutzer beim Durcharbeiten durch den Dialog helfen. Die Nutzer können den Dialog wesentlich schneller abarbeiten, mit weniger Anstrengung, weniger Fehlern und – welch eine Überraschung – mit mehr Zufriedenheit.
Inline Validierungen geben den Nutzern unterschiedliche Arten von Feedback in Echt-Zeit. So kann der Nutzer beispielsweise zu einer Bestätigung aufgefordert werden, es können Vorschläge gemacht werden oder auch Hinweise für das korrekte Ausfüllen eines Formulars gegeben werden. Das wichtigste ist jedoch, dass alle diese Informationen vor, während und nach der Eingabe des Nutzers gemacht werden können, um den Nutzer so optimal zu unterstützen.
Weiterlesen
Web Formulare sind nicht besonders gute Konversationsgenies. Sie stellen dem Nutzer eine Reihe von Fragen und warten dann bis der Nutzer letztendlich alle Fragen beantwortet und das Formular eine Auswertung vornehmen und eine Rückmeldung ausgeben kann. Wenn Sie sich also für ein besonders soziales Netzwerk registrieren oder eine Registrierung auf einer E-Commerce Seite durchführen, ist es fast immer ein Monolog.

Verantwortlich für einen schlechten Dialog eines Formulars ist oft, die Art und Weise wie es entwickelt bzw. implementiert wurde. Web Formulare die ein veraltetes Submit-And-Refresh Modell nutzen, geben solange keine Rückmeldung bis man tatsächlich den Absende bzw. Submit-Button gedrückt hat. Aber das muss nicht so sein. Echtzeit Inline Validierungen können den Nutzer beim Durcharbeiten durch den Dialog helfen. Die Nutzer können den Dialog wesentlich schneller abarbeiten, mit weniger Anstrengung, weniger Fehlern und – welch eine Überraschung – mit mehr Zufriedenheit.
Inline Validierungen geben den Nutzern unterschiedliche Arten von Feedback in Echt-Zeit. So kann der Nutzer beispielsweise zu einer Bestätigung aufgefordert werden, es können Vorschläge gemacht werden oder auch Hinweise für das korrekte Ausfüllen eines Formulars gegeben werden. Das wichtigste ist jedoch, dass alle diese Informationen vor, während und nach der Eingabe des Nutzers gemacht werden können, um den Nutzer so optimal zu unterstützen.
Weiterlesen
-
derhov,
- 18 Mai 2012, 16:59
- Kommentar schreiben
- 0
Delegate in C#
Hallo Leute,
in diesem Artikel möchte ich Ihnen zeigen, was Delegate ist und wie kann man ihn benutzen. Als Beispiele nehmen wir ein Calculator.
Also, wenn Sie ein Calculator implementieren wollen, werden Sie hochwahrscheinlich so was schreiben:
Der Kode ist korrekt und wird seine Aufgabe erfüllen. Er hat aber auch ein Problem: was werden Sie tun, wenn Sie später noch eine Operation benötigen? Ja, klar, die Operation muss man implementieren und die Klasse noch mal kompilieren. Manchmal geht das einfach nicht bzw. ist sehr teuer und aufwendig. Wie kann man den Kode verbessern?
Weiterlesen
in diesem Artikel möchte ich Ihnen zeigen, was Delegate ist und wie kann man ihn benutzen. Als Beispiele nehmen wir ein Calculator.
Also, wenn Sie ein Calculator implementieren wollen, werden Sie hochwahrscheinlich so was schreiben:
public double PerformOperation(string op, double x, double y)
{
switch (op)
{
case "+": return x + y;
case "-": return x - y;
case "*": return x * y;
case "/": return x / y;
default: throw new ArgumentException(string.Format("Operation {0} is invalid", op), "op");
}
}Der Kode ist korrekt und wird seine Aufgabe erfüllen. Er hat aber auch ein Problem: was werden Sie tun, wenn Sie später noch eine Operation benötigen? Ja, klar, die Operation muss man implementieren und die Klasse noch mal kompilieren. Manchmal geht das einfach nicht bzw. ist sehr teuer und aufwendig. Wie kann man den Kode verbessern?
Weiterlesen
-
mark,
- 17 Mai 2012, 20:09
- Kommentar schreiben
- 0
Der Mythos Usability Testing
Im Jahr 1998, gab der Usability Experte Rolf Molich (ein Kollege von Jakob Nielsen, der ebenfalls in der Usability Szene sehr bekannt ist) neun Teams die Aufgabe eine Evaluierung der Website www.hotmail.com durchzuführen. Für die gesamte Evaluation hatten die Teams insgesamt drei Wochen Zeit zur Verfügung. Die Aufgabe war ein Versuch und Teil einer Experimentserie „Comparative Usability Evaluations (CUEs)“, die helfen sollten Standards und Best Practices für Usability Tests herauszufinden. In jedem Teil des Experiments, gab Molich einigen Usability Teams die Aufgabe ein Design bzw. eine Website nach einer Methode ihrer Wahl zu evaluieren.
Aus den dokumentierten Ergebnissen der zweiten Testreihe (CUE-2), konnte man einen überraschenden Trend beobachten. Obwohl Usability Experten in der professionellen Szene, eine wissenschaftliche Herangehensweise beanspruchen um Probleme im Interface Design zu identifizieren, muss man aufgrund der Ergebnisse feststellen, dass die Usability Auswertungen bestenfalls nur annährend wissenschaftlich Charakter aufweisen.
Weiterlesen
Aus den dokumentierten Ergebnissen der zweiten Testreihe (CUE-2), konnte man einen überraschenden Trend beobachten. Obwohl Usability Experten in der professionellen Szene, eine wissenschaftliche Herangehensweise beanspruchen um Probleme im Interface Design zu identifizieren, muss man aufgrund der Ergebnisse feststellen, dass die Usability Auswertungen bestenfalls nur annährend wissenschaftlich Charakter aufweisen.
Weiterlesen
-
derhov,
- 17 Mai 2012, 16:37
- Kommentar schreiben
- 0
Spam: Konfigurieren von SMTP-Server
Wenn Sie eigenen Mailserver betreiben, haben Sie sich bestimmt Gedanken gemacht, was, wo und wie soll gemacht werden, damit Ihre Mails nicht in Spam-Ordner landen würden.
Im Artikel werden die nötigen Schritte nach Wichtigkeit angeordnet. Am besten fangen Sie mit nächstem nicht, ohne das vorherige erledigt zu haben.
Der Name gibt schon an, worum es geht.Reverse DNS lookup ist umgekehrter Prozess von DNS lookup. Der Mailserver von Empfänger ermittelt anhand von IP-Adresse den Domainname. Und wenn der Name mit der Angabe im Feld „from“ nicht übereinstimmt, geht der Mailserver davon aus, dass die Mail Spam ist.
Wie kann man das tun?
Soweit wie ich weiß, nur der Besitzer von IP-Adress-Pool kann das konfigurieren. Deswegen fragen Sie danach bei Ihrem Hosting-Provider.
Wie kann man das prüfen?
Es gibt viele Online-Services, die das machen, z.B. der Service. Geben Sie die IP-Adresse von Ihrem Server und wenn im Ergebnisfeld Ihr Domain steht, ist alles ok.
Weiterlesen
Im Artikel werden die nötigen Schritte nach Wichtigkeit angeordnet. Am besten fangen Sie mit nächstem nicht, ohne das vorherige erledigt zu haben.
Reverse DNS
Der Name gibt schon an, worum es geht.Reverse DNS lookup ist umgekehrter Prozess von DNS lookup. Der Mailserver von Empfänger ermittelt anhand von IP-Adresse den Domainname. Und wenn der Name mit der Angabe im Feld „from“ nicht übereinstimmt, geht der Mailserver davon aus, dass die Mail Spam ist.
Wie kann man das tun?
Soweit wie ich weiß, nur der Besitzer von IP-Adress-Pool kann das konfigurieren. Deswegen fragen Sie danach bei Ihrem Hosting-Provider.
Wie kann man das prüfen?
Es gibt viele Online-Services, die das machen, z.B. der Service. Geben Sie die IP-Adresse von Ihrem Server und wenn im Ergebnisfeld Ihr Domain steht, ist alles ok.
Weiterlesen
Gauge mit HTML5 Canvas
Hallo Leute!Ich möchte Ihnen ein ganz interessantes Widget für Ihre Webseite vorstellen, der mit HTML5-Canvas gemacht wurde: CanvGauge. Das ist nichts anderes als eine Guage mit der Sie verschiedene Messgrößen darstellen können. CanvGauge ist sehr einfach zu benutzen und sieht richtig gut aus.
Weiterlesen
-
DrWeb,
- 15 Mai 2012, 19:03
- Kommentar schreiben
- 0
Crash-Test von elektronischem Papier mit Schere
Hallo!
Ich möchte Ihnen ein ganz interessantes Video empfehlen, wo es gezeigt wird wie ein Display aus elektronischem Papier mit Schere geschnitten wird. Das Wichtigste dabei: Display bleibt funktionalfähig!
Gratulation! Zukunft ist da!
Ich möchte Ihnen ein ganz interessantes Video empfehlen, wo es gezeigt wird wie ein Display aus elektronischem Papier mit Schere geschnitten wird. Das Wichtigste dabei: Display bleibt funktionalfähig!
Gratulation! Zukunft ist da!
-
mark,
- 14 Mai 2012, 21:37
- Kommentar schreiben
- 0
Einfaches neuronales Netz
Hallo Acadopuser!
Jeder von Ihnen hat schon etwas über neuronale Netze gehört und jemand hat wahrscheinlich sogar Ahnung, was es ist und wie es funktioniert. In diesem Artikel möchte ich allen anderen zeigen, dass es sehr einfach ist, ein elementares neuronales Netz zu basteln.
Also, unsere Aufgabe: wir hätten gerne ein Netz, das die Zahlen auf folgenden Bildern erkennt.

Die Bilder sind schwarz-weiß und haben festen Breite und Höhe(45x45). Jeder Pixel im Bild stellt ein Input für unser Netz dar, deswegen hat unser Netz genau 45x45 Eingänge. Da wir nur sechs Bilder haben, wird es nun auch genau sechs Ausgänge geben. Jedem Ausgang entspricht ein Neuron. Jeder Eingang ist mit jedem Neuron verbunden.

Weiterlesen
Jeder von Ihnen hat schon etwas über neuronale Netze gehört und jemand hat wahrscheinlich sogar Ahnung, was es ist und wie es funktioniert. In diesem Artikel möchte ich allen anderen zeigen, dass es sehr einfach ist, ein elementares neuronales Netz zu basteln.
Also, unsere Aufgabe: wir hätten gerne ein Netz, das die Zahlen auf folgenden Bildern erkennt.

Die Bilder sind schwarz-weiß und haben festen Breite und Höhe(45x45). Jeder Pixel im Bild stellt ein Input für unser Netz dar, deswegen hat unser Netz genau 45x45 Eingänge. Da wir nur sechs Bilder haben, wird es nun auch genau sechs Ausgänge geben. Jedem Ausgang entspricht ein Neuron. Jeder Eingang ist mit jedem Neuron verbunden.

Weiterlesen
-
bigbang,
- 14 Mai 2012, 21:18
- Kommentar schreiben
- 0
Universelles Prototyping mit Foundation
Übersetzung des Artikels
Es gibt mittlerweile hunderte von Geräten, die einen Zugriff auf das Web erlauben. Diese Geräte gibt es mit unterschiedlichen Fähigkeiten und Einschränkungen, wie etwa Eingabe-Stil, Bildschirmgröße, Auflösung und Form. Mit diesen Geräten wird der Datenverkehr bereits nächstes Jahr den der herkömmliche Computer übersteigen. Deshalb brauchen wir Werkzeuge um Applikationen und Websites für diese Geräte universell entwickeln zu können.

Es gibt viele Werkzeuge, um ein Front-End-Design zu beschleunigen z.B. Blueprint, aber bis vorkurzem gab es für alle diese verschiedenen Geräte mit unterschiedlichen Spezifikationen nur wenige Werkzeuge für ansprechende Design-Konzeption und Umsetzung zur Verfügung. Es gibt z.B. das “320 and up” von Andy und Keith Clarke und “Columnal”, ein anpassungsfähiges Grid-System.
Heute, möchten wir uns anschauen wie wir ein anpassungsfähiges universelles Design mit „Foundation“, einem Light Front-End Framework, mit dem es möglich ist, sehr schnell Prototypen und produktive Websites zu entwickeln. Wenn Sie zuvor es versucht haben zu vermeiden, anpassungsfähiges Design zu entwickeln, weil es schwer zu realisieren schien, der Aufwand zu hoch schien oder es nicht genügend ansprechende Werkzeuge dafür gab oder Sie sich nicht sicher waren, ob es wirklich notwendig ist, dann ist dies der perfekte Zeitpunkt um damit anzufangen.
Weiterlesen
Es gibt mittlerweile hunderte von Geräten, die einen Zugriff auf das Web erlauben. Diese Geräte gibt es mit unterschiedlichen Fähigkeiten und Einschränkungen, wie etwa Eingabe-Stil, Bildschirmgröße, Auflösung und Form. Mit diesen Geräten wird der Datenverkehr bereits nächstes Jahr den der herkömmliche Computer übersteigen. Deshalb brauchen wir Werkzeuge um Applikationen und Websites für diese Geräte universell entwickeln zu können.

Es gibt viele Werkzeuge, um ein Front-End-Design zu beschleunigen z.B. Blueprint, aber bis vorkurzem gab es für alle diese verschiedenen Geräte mit unterschiedlichen Spezifikationen nur wenige Werkzeuge für ansprechende Design-Konzeption und Umsetzung zur Verfügung. Es gibt z.B. das “320 and up” von Andy und Keith Clarke und “Columnal”, ein anpassungsfähiges Grid-System.
Heute, möchten wir uns anschauen wie wir ein anpassungsfähiges universelles Design mit „Foundation“, einem Light Front-End Framework, mit dem es möglich ist, sehr schnell Prototypen und produktive Websites zu entwickeln. Wenn Sie zuvor es versucht haben zu vermeiden, anpassungsfähiges Design zu entwickeln, weil es schwer zu realisieren schien, der Aufwand zu hoch schien oder es nicht genügend ansprechende Werkzeuge dafür gab oder Sie sich nicht sicher waren, ob es wirklich notwendig ist, dann ist dies der perfekte Zeitpunkt um damit anzufangen.
Weiterlesen
