In letzter Zeit arbeitet das Projekt als Nachrichtenkriecher. Ich möchte diese Funktion implementieren: Nachdem ein Crawler die URL dieser Seite nicht an die E -Mail -Adresse senden kann. Das endgültige Effektdiagramm lautet wie folgt. Filter -Tags, Ausfallstatuscodes usw. können später hinzugefügt werden, um die Klassifizierungs- und Suchausnahmen zu erleichtern.
Entwickler können die Gründe für den Crawler -Fehler basierend auf den URL- und Stapelinformationen in der E -Mail analysieren.
Schalten Sie den SMTP -Service ein
Einstellungen in QQ -E -Mail -> Aktivieren Sie den SMTP -Dienst in Ihrem Konto
Beachten Sie, dass die QQ -E -Mail nach dem Öffnen einen Autorisierungscode generiert. Verwenden Sie diesen Autorisierungscode anstelle des ursprünglichen E -Mail -Kennworts, wenn Sie die E -Mail im Code verbinden, um die Verwendung eines klaren Textkennworts zu vermeiden.
Ich habe ein Beispiel online nachgeschlagen und nach diesem Artikel Java Mail (ii): Javamail -Einführung und Beispielcode zum Senden einer einfachen E -Mail.
Eigenschaften props = new Properties (); // Debuggging props.setProperty aktivieren ("mail.debug", "true"); // Der sendende Server erfordert Authentifizierung props.setProperty ("mail.smtp.auth", "true"); // Die mails -sendungsnamens -mails -sendungsname ("mail.host. Protokollname props.setProperty ("mail.transport.protocol", "SMTP"); Sitzungssitzung = Sitzung.GetInstance (Props); // Die Mail -Inhaltspart -Nachricht msg = new mimemessage (Sitzung); "http://blog.csdn.net/never_cxb/article/details/50524571")Builder.Append("page Crawler -Fehler"); builder.append ("/n data" + timetool.getCurentTime (); InternetAddress ("** Sender -E -Mail -Adresse **"); // E -Mail -Transport = Session.getTransport (); Transport.connect ("SMTP.QQ.com", "** Sender -E -Mail -Adresse **", "** Ihr E -Mail -Passwort oder Autorisierungscode **"); }); transport.CLOSE ();Aber es ist ein Fehler
DEBUG SMTP: Auth Login -Befehl Trace unterdrückteDebug SMTP: Auth Login fehlgeschlagen in Thread "Haupt" javax.mail.authenticationFailedException: 530 Fehler: Eine sichere Verbindung ist erforderlich (z. B. SSL). Weitere Informationen unter http://service.mail.qq.com/cgi-bin/help?id=28
Da der Beispielcode 163 E -Mail -Adresse verwendet und der Autor eine QQ -E -Mail -Adresse ist, bedeutet die Protokollanalyse, dass die QQ -E -Mail -Adresse eine SSL -Verschlüsselung erfordert.
Schalten Sie die SSL -Verschlüsselung ein
Ich habe online gesucht und festgestellt, dass andere Dinge wie 163. Sina -E -Mail keine SSL -Verschlüsselung erfordert, sodass Sie Ihre QQ -E -Mail aufgeben können.
Es gibt auch ein Sprichwort im Internet, dass die Änderung von SMTP.qq.com in SMTP.Exmail.qq.com keine SSL -Verschlüsselung erfordert, aber es hat dem Autor keine gelengend gelang. Fügen Sie also die SSL -Verschlüsselung ehrlich hinzu.
Der folgende Code ermöglicht die SSL -Verschlüsselung
MailsSlsocketFactory sf = new MailsSlsocketFactory ();
Erfolgreich sind das Konsolenausgangsprotokoll und die Renderings wie folgt
DEBUG SMTP: UseEehlo True, UseAUTH TREGEBUG SMTP: Versuchen Sie, eine Verbindung zum Host "SMTP.qq.com", Port 465, ISSSL TRUE220 herzustellen Quit221 BYE
Vollständiger Codebeispiel
public class mailTool {public static void main (String [] args) löst MessagingException, GeneralSecurityException {Properties props = new Properties () aus; // Debugg -debugging props.setProperty aktivieren ("mail.debug", "true"); // Der sendende Server erfordert Authentifizierung props.setProperty ("mail.smtp.auth", "true"); // Setzen Sie den E -Mail -Server -Hostnamen props.setProperty ("mail.host", "SMTP.qq.com"); // Mail -Protokollname props.setProperty senden ("mail.transport.protocol", "SMTP"); MailsSlsocketFactory sf = new MailsSlsocketFactory (); sf.settrustallhosts (true); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.smtp.ssl.socketfactory", sf); Session Session = Session.getInstance (Requisiten); Nachricht msg = new Mimemessage (Sitzung); msg.setsubject ("gesehenews error"); StringBuilder Builder = new StringBuilder (); Builder.Append ("url =" + "http://blog.csdn.net/never_cxb/article/details/50524571"); Builder.Append ("/n Seite Crawler -Fehler"); Builder.Append ("/n time" + timetool.getCurrentTime ()); msg.setText (builder.toString ()); msg.setfrom (neue InternetAddress ("** Sender -E -Mail -Adresse **"); Transport Transport = Session.GetTransport (); transport.connect ("SMTP.qq.com", "** Sender -E -Mail -Adresse **", "** Ihr E -Mail -Passwort oder Autorisierungscode **"); Transport.SendMessage (MSG, neue Adresse [] {New InternetAddress ("** E -Mail -Adresse des Empfängers **")}); Transport.close (); }}Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.