>  기사  >  Java  >  Java는 JavaMail을 기반으로 QQ 사서함으로 이메일 보내기를 구현합니다.

Java는 JavaMail을 기반으로 QQ 사서함으로 이메일 보내기를 구현합니다.

高洛峰
高洛峰원래의
2017-01-16 09:49:471833검색

최근 뉴스 크롤러 프로젝트를 진행 중인데 이 기능을 구현하고 싶습니다. 페이지 크롤링에 실패한 후 이 페이지의 URL을 이메일로 보내세요. 최종 렌더링은 다음과 같습니다. 분류 및 검색 예외를 용이하게 하기 위해 나중에 필터 레이블, 실패 상태 코드 등을 추가할 수 있습니다.

Java는 JavaMail을 기반으로 QQ 사서함으로 이메일 보내기를 구현합니다.

개발자는 이메일에 포함된 URL 및 스택 정보를 기반으로 크롤러 실패 원인을 분석할 수 있습니다.

서버가 다운됐나요?

아니면 크롤러의 Dom 구문 분석이 콘텐츠를 구문 분석하지 않습니까?

아니면 이 페이지에 정규 표현식을 적용할 수 없나요? SMTP 서비스

QQ 메일함 설정->계정에서 SMTP 서비스를 활성화하세요

QQ 메일함을 열면 인증 코드가 생성됩니다. 코드 원래 이메일 비밀번호 대신 이 인증 코드를 사용하여 이메일에 연결하세요. 이렇게 하면 일반 텍스트 비밀번호를 사용하지 않아도 됩니다. Java는 JavaMail을 기반으로 QQ 사서함으로 이메일 보내기를 구현합니다.

그런데 오류가 보고되었습니다

Properties props = new Properties();
 
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
 
Session session = Session.getInstance(props);
 
//邮件内容部分
Message msg = new MimeMessage(session);
msg.setSubject("seenews 错误");
StringBuilder builder = new StringBuilder();
builder.append("url = " + "http://blog.csdn.net/never_cxb/article/details/50524571");
builder.append("页面爬虫错误");
builder.append("\n data " + TimeTool.getCurrentTime());
msg.setText(builder.toString());
//邮件发送者
msg.setFrom(new InternetAddress("**发送人的邮箱地址**"));
 
//发送邮件
Transport transport = session.getTransport();
transport.connect("smtp.qq.com", "**发送人的邮箱地址**", "**你的邮箱密码或者授权码**");
 
transport.sendMessage(msg, new Address[] { new InternetAddress("**接收人的邮箱地址**") });
transport.close();

Java는 JavaMail을 기반으로 QQ 사서함으로 이메일 보내기를 구현합니다.

샘플 코드는 163 메일박스를 사용하고 작성자는 QQ이기 때문입니다. 사서함, 로그 참조 분석에 따르면 QQ 사서함에는 SSL 암호화가 필요합니다.

SSL 암호화 활성화

온라인에서 검색해 보니 163, Sina 메일함 등 다른 메일함은 SSL 암호화가 필요하지 않으니 QQ 메일함은 포기하셔도 됩니다.

smtp.qq.com을 smtp.exmail.qq.com으로 바꾸면 SSL 암호화가 필요 없다는 말이 인터넷에 떠돌기도 하는데, 작성자가 성공적으로 실행하지 못했습니다. 이제 SSL 암호화를 추가해 보겠습니다.

다음 코드는 SSL 암호화를 활성화합니다

DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
Exception in thread "main" javax.mail.AuthenticationFailedException: 530
Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28

성공적으로 콘솔 출력 로그 및 렌더링은 다음과 같습니다

MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);

전체 코드 예제

DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL true
220 smtp.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 465
...
 data 2016-01-19 17:00:44 Tue
.
250 Ok: queued as
QUIT
221 Bye

가 도움이 되었습니다.

QQ 사서함으로 이메일을 보내는 Java 기반 JavaMail 구현에 대한 자세한 내용은 PHP 중국어 웹사이트를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.