Recientemente, el proyecto está trabajando como un rastreador de noticias. Quiero implementar esta función: después de que un rastreador no pueda enviar la URL de esta página a la dirección de correo electrónico. El diagrama de efecto final es el siguiente. Las etiquetas de filtro, los códigos de estado de falla, etc. se pueden agregar más tarde para facilitar las excepciones de clasificación y búsqueda.
Los desarrolladores pueden analizar las razones de la falla del rastreador en función de la información de URL y apilar en el correo electrónico.
Encienda el servicio SMTP
Configuración en el correo electrónico QQ -> Habilitar el servicio SMTP en su cuenta
Tenga en cuenta que después de abrir, el correo electrónico QQ generará un código de autorización. Use este código de autorización en lugar de la contraseña de correo electrónico original al conectar el correo electrónico en el código, para evitar usar una contraseña de texto sin formato.
Busqué un ejemplo en línea, y según este artículo Java Mail (ii): Introducción de Javamail y código de muestra para enviar un correo electrónico simple.
Propiedades props = new Properties (); // Enable de depuración de depuración PropssSetProperty ("mail.debug", "true"); // El servidor de envío requiere autenticación propss.setProperty ("mail.smtp.auth", "true"); // establece el nombre de host del servidor de correo. Nombre del protocolo PropsssSetProperty ("mail.transport.protocol", "smtp"); Sesión session = session.getInStance (props); // El mensaje de la parte del contenido de correo msg = new mimemessage (session); msg.setsubject ("Error de SeenWs"); StringBuilder Builder = new StringBuilder (); Builder.Append ("url =" + "http://blog.csdn.net/never_cxb/article/details/50524571");builder.append("Page Crawler Error"); builder.append ("/n data" + timetool.getCurrentTime ()); msg.settext (builder.TOSCERSING (); /////////alental sendero.SetFrom.SetFromFrom (neweS Internetaddress ("** Dirección de correo electrónico del remitente **")); // Enviar correo electrónico Transport Transport = session.getTransport (); transport.connect ("smtp.qqq.com", "** La dirección de correo electrónico del remitente **", "** su contraseña de correo electrónico o código de autorización **"); transporte. }); transport.close ();Pero es un error
Debug SMTP: Auth Comando de inicio de sesión Trace supressedDebug SMTP: Auth Login FallingException en el subproceso "principal" javax.mail.authenticationFailedException: 530 Error: se requiere una conexión segura (como SSL). Más información en http://service.mail.qq.com/cgi-bin/help?id=28
Debido a que el código de muestra utiliza 163 dirección de correo electrónico, y el autor es una dirección de correo electrónico de QQ, el análisis de registro significa que la dirección de correo electrónico de QQ requiere cifrado SSL.
Encienda el cifrado SSL
Busqué en línea y descubrí que otras cosas, como 163. El correo electrónico de Sina no requiere cifrado SSL, por lo que puede renunciar a su correo electrónico QQ.
También hay un dicho en Internet que cambiar smtp.qq.com a smtp.exmail.qq.com no requiere el cifrado SSL, pero el autor no tuvo éxito en ejecutarse. Así que agregue el cifrado SSL honestamente.
El siguiente código habilita el cifrado SSL
MailsslsocketFactory sf = new MailsSlSocketFactory (); sf.setTrustallHosts (true); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.ssl.ssl.socketfactory", sf);Con éxito, el registro y las representaciones de salida de la consola son los siguientes
Debug SMTP: UseeHlo True, useAuth TrueDebug SMTP: Intentando conectarse al host "Smtp.qq.com", Port 465, ISSSL True220 Smtp.qq.com ESMTP QQ Mail ServerDebug Smtp: Connected to Host "Smtp.qq.com", Port: 465 ... Data 2016-01-19 17:00:44 Tue.250 OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: OK: QUE Quit221 adiós
Ejemplo de código completo
Public Class MailTool {public static void main (String [] args) lanza MessionAgingException, GeneralSecurityException {Properties props = new Properties (); // habilitar la depuración de depuración propssssetProperty ("mail.debug", "verdadero"); // El servidor de envío requiere accesorios de autenticación. // Establecer el nombre de host del servidor de correo Props.SetProperty ("Mail.host", "smtp.qq.com"); // Enviar nombre del protocolo de correo Props.SetProperty ("mail.transport.protocol", "smtp"); MailsSlSocketFactory SF = new MailsSlSocketFactory (); sf.setTrustallHosts (verdadero); propssput ("mail.smtp.ssl.enable", "verdadero"); props.put ("mail.smtp.ssl.socketfactory", sf); Sesión session = session.getInstance (Props); Mensaje msg = new Mimemessage (sesión); msg.setsubject ("Error de SeenWs"); StringBuilder Builder = new StringBuilder (); builder.append ("url =" + "http://blog.csdn.net/never_cxb/article/details/50524571"); builder.append ("/n Page Error de rastreador"); builder.append ("/n tiempo" + timetool.getCurrentTime ()); msg.settext (builder.ToString ()); msg.setFrom (nuevo Internetaddress ("** Dirección de correo electrónico del remitente **")); Transport Transport = session.getTransport (); transport.connect ("smtp.qq.com", "** Dirección de correo electrónico del remitente **", "** Su contraseña de correo electrónico o código de autorización **"); transport.sendMessage (MSG, nueva dirección [] {nueva Internetaddress ("** Dirección de correo electrónico del receptor **")}); transport.close (); }}Lo anterior se trata de este artículo, espero que sea útil para el aprendizaje de todos.