需求
最近项目在做新闻爬虫,想实现这个功能:爬虫某个页面失败后,把这个页面的 url 发到笔者的邮箱。最终实现的效果图如下,后期可以加上过滤标签、失败状态码等,方便分类搜索异常。
开发人员可以根据邮件里的 url 和堆栈信息,分析爬虫失败的原因。
- 是不是服务器 down 了?
- 还是爬虫的 Dom 解析没有解析到内容?
- 还是正则表达式对于这个页面不适用?
开启SMTP服务
在 QQ 邮箱里的 设置->账户里开启 SMTP 服务
注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
下载依赖的 jar 包
官方下载地址 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR。
解压完之后,通常我们只需要其中的mail.jar
,把它加到我们 java 工程的依赖包中。
代码
网上查了一下例子,根据这篇文章 Java Mail(二):JavaMail介绍及发送一封简单邮件 的示例代码。
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props