Recentemente, o projeto está funcionando como um rastreador de notícias. Quero implementar esta função: depois que um rastreador não envia o URL desta página para o endereço de email. O diagrama de efeito final é o seguinte. Tags de filtro, códigos de status de falha etc. podem ser adicionados posteriormente para facilitar a classificação e as exceções da pesquisa.
Os desenvolvedores podem analisar os motivos para a falha do rastreador com base nas informações de URL e empilhamento no email.
Ligue o serviço SMTP
Configurações no e -mail QQ -> Ativar serviço SMTP em sua conta
Observe que, após a abertura, o email QQ gerará um código de autorização. Use este código de autorização em vez da senha de email original ao conectar o email no código, para evitar o uso de uma senha de texto simples.
Procurei um exemplo online e, de acordo com este artigo, Java Mail (II): Introdução ao Javamail e código de amostra para enviar um email simples.
Propriedades Props = new Properties (); // Ative a depuração de depuração Props.SetProperty ("Mail.debug", "True"); // O servidor de envio requer autenticação props.SetProperty ("Mail.smtp.auth", "true"); // definir o nome do servidor smert. Nome do protocolo ProPs.SetProperty ("Mail.Transport.Protocol", "SMTP"); Sessão session = session.getInstance (props); // a mensagem de conteúdo de email me mensagem msg = new Mimemessage (sessão); msg.SetSubject ("error seerews"); StringBuilder Builder = new StringBuilder (); Builder.append ("url =" + "http://blog.csdn.net/never_cxb/article/details/50524571"); InternetAddress ("** Endereço de email do remetente **")); // Envie transporte de transporte por email = session.getTransport (); transport.connect ("smtp.qq.com", "** Endereço de email do remetente **" ** "** seu novo código de senha ou código de autorização **"); transport.SendMessage (MSG, endereço [] [] }); transport.close ();Mas é um erro
Debug SMTP: Rastreio de comando de login auth suprimeddebug smtp: autenticação de login falha no thread "main" javax.mail.authenticationFailedException: 530 Erro: é necessária uma conexão segura (como SSL). Mais informações em http://service.mail.qq.com/cgi-bin/help?id=28
Como o código de amostra usa 163 endereço de email e o autor é um endereço de email QQ, a análise de log significa que o endereço de email QQ requer criptografia SSL.
Ligue a criptografia SSL
Eu pesquisei on -line e descobri que outras coisas, como 163. O email do Sina não requer criptografia SSL, para que você possa desistir do seu e -mail QQ.
Há também um ditado na Internet de que alterar o smtp.qq.com para smtp.exmail.qq.com não requer criptografia SSL, mas o autor não conseguiu executar. Portanto, adicione a criptografia SSL honestamente.
O código a seguir permite a criptografia SSL
MailSslSocketFactory sf = new MailSslSocketFactory (); Sf.SettrustAlhosts (true); Props.put ("Mail.smtp.sssl.enable", "true");Com sucesso, o log de saída do console e as renderizações são as seguintes
Debug Smtp: useehlo true, useauth trudebug smtp: tentando se conectar para hospedar "smtp.qq.com", porta 465, ISSSL True220 smtp.qq.com ESMTP QQ MAIL SERVERDEBUG SMTP: conectado ao host "smtp.qq.com", porto: 465 ... Dados 2016-0-0. Quit221 Bye
Exemplo de código completo
public class MailTool {public static void main (string [] args) lança MessagingException, GeneralSecurityException {Properties Props = new Properties (); // Ativar depuração de depuração Props.SetProperty ("Mail.debug", "True"); // O servidor de envio requer autenticação props.setProperty ("Mail.smtp.auth", "true"); // Defina o nome do host do servidor de correio props.setProperty ("Mail.host", "smtp.qq.com"); // Envie o nome do protocolo de email props.setProperty ("Mail.Transport.protocol", "SMTP"); MailSslSocketFactory SF = new MailSslSocketFactory (); sf.SettrustAlhosts (true); props.put ("Mail.smtp.ssl.enable", "true"); props.put ("Mail.smtp.ssl.socketfactory", sf); Sessão session = session.getInstance (adereços); Mensagem msg = new Mimemessage (sessão); msg.SetSubject ("Erro de Seerews"); StringBuilder Builder = new StringBuilder (); construtor.append ("url =" + "http://blog.csdn.net/never_cxb/article/details/50524571"); construtor.Append ("/n Page Crawler Erro"); builder.append ("/n time" + timeTool.getCurrentTime ()); msg.settext (builder.toString ()); msg.setFrom (novo InternetAddress ("** Endereço de e -mail do remetente **")); Transporte de transporte = session.gettransport (); transport.connect ("smtp.qq.com", "** endereço de email do remetente **", "** sua senha de e -mail ou código de autorização **"); transport.sendMessage (msg, novo endereço [] {new InternetAddress ("** Endereço de email do receptor **")}); transport.close (); }}O exposto acima é tudo sobre este artigo, espero que seja útil para o aprendizado de todos.