代码不精,封装无力。。邮件方面的知识不懂,核心原理照着这位大佬的博客敲的,目前只能发给一个邮箱,只能发文本(html也成),密码会暴露在控制台下。下次更新待修改。

下载器类

package just4test2;
import java.io.*;
import java.net.*;
import org.jsoup.*;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
public class Downloader {private String base;public Downloader(String abase) {base=abase;}public void download(String src,String path) throws Exception {File fp = new File (path);if (!fp.exists())fp.mkdirs();int pos = src.lastIndexOf('/');String filename = src.substring(pos);URL url = new URL(src);InputStream cin = url.openStream();//开启连接,同时返回输入流对象OutputStream cout = new BufferedOutputStream(new FileOutputStream (path+filename));//得到文件输出流对象byte[] buffer = cin.readAllBytes();//将文件写入缓冲数组cout.write(buffer);//写到文件中cin.close();cout.close();}public void downPic(String path) throws Exception{//用jsoup获取连接,设置超时防止卡死,模拟浏览器为ChromeConnection  con = Jsoup.connect(base).timeout(40000).userAgent("Chrome");Document doc = con.get();//得到document对象// 查找所有img标签Elements imgs = doc.getElementsByTag("img");//根据img标签抓元素,得到一个element元素集elements,很形象int j=1;for (Element x:imgs) {String imgSrc = x.attr("abs:src");//获取src属性的绝对路径imgSrc = imgSrc.replaceAll("\\s","");//把空白符替换掉System.out.printf("正在下载第%d个文件",j++);System.out.print(",地址:");System.out.println(imgSrc);download(imgSrc,path);}}public String getPicURL() throws Exception{String res = "";Connection  con = Jsoup.connect(base);//用jsoup获取连接Document doc = con.get();//发送get请求,得到响应,将该响应解析得到document对象// 查找所有img标签Elements imgs = doc.getElementsByTag("img");//根据img标签抓元素,得到一个element元素集elements,很形象for (Element x:imgs) {String imgSrc = x.attr("abs:src");//获取绝对路径imgSrc = imgSrc.replaceAll("\\s","");//把空白符替换掉res += ("<img src=\""+imgSrc+ "\"" + "><br><br><br><br>");//手动添加html标签}return res;}public static void main(String[] args)throws Exception {Connection con = Jsoup.connect("https://www.baidu.com/s?wd=emm&pn=10&oq=emm&tn=baiduhome_pg&ie=utf-8&usm=1&rsv_idx=2&rsv_pq=d9987a9100019e58&rsv_t=6182mCdG68LYFKW8uOWnNZtMAxJI2cuJx1Jf1KYoBLNHJq9pOBobv%2FRW3FNBsPfXmgMc").timeout(40000);//con.data("page","2");Document doc = con.get();System.out.println(doc);}
}

邮件发送器类

package just4test3;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
/** 简易邮件发送器,只能发字符串,只能发给一个人(但可以用html标签,所以理论上可以全部实现正常邮件应有的功能)*/
public class EzSender {private Session session;//会话对象private String name,pwd,sub,body,mynick="Simon",thonick="MyBF";//基本属性public EzSender (String aname,String smtp,String apwd) throws Exception {name = aname;pwd = apwd;//密码是可以看到的,下一步需要修改// 1. 创建参数配置, 用于连接邮件服务器的参数配置Properties props = new Properties();                    // 参数配置props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)props.setProperty("mail.smtp.host", smtp);   // 发件人的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true");            // 需要请求认证// 2. 根据配置创建会话对象, 用于和邮件服务器交互session = Session.getInstance(props);session.setDebug(true);    // 设置为debug模式, 可以查看详细的发送 log}public void setContent(String asub,String abody) {sub = asub;body = abody;}public void setNick(String amy,String atho) {mynick = amy;thonick = atho;}public void sendTo(String to) throws Exception {//创建邮件MimeMessage message = new MailCreater(session,name,to,sub,body,mynick,thonick).getMessage();//根据Session获取文件传输对象Transport transport = session.getTransport();//开启连接!transport.connect(name,pwd);//获取所有收件人,发送邮件!transport.sendMessage(message, message.getAllRecipients());//关闭连接transport.close();}}

邮件创建器类

package just4test3;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
public class MailCreater {private MimeMessage message; public MailCreater (Session session,String from,String to,String sub,String body,String mynick,String thonick)throws Exception {message = new MimeMessage(session);     // 创建邮件对象//其中 InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码可省略message.setFrom(new InternetAddress(from,mynick));//收件人message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(to,thonick));message.setSubject(sub);//主题        message.setContent(body, "text/html;charset=UTF-8");//正文,编码message.setSentDate(new Date());//日期,直接new一个返回的就是今天的date对象message.saveChanges();//保存文件}/** 存放到本地,默认保存到项目目录下*/public void saveMail() throws Exception{OutputStream cout = new FileOutputStream("MyEmail.eml");message.writeTo(cout);cout.flush();cout.close();}public MimeMessage getMessage() {return message;}}

主类

package just4test3;
import java.util.*;
import just4test2.*;
public class Main {public static void main(String[] args){try{Scanner cin = new Scanner (System.in);System.out.println("输入用户名,smtp服务器地址,密码");String name = cin.next(),smtp = cin.next(),pwd = cin.next();EzSender ez = new EzSender(name,smtp,pwd);System.out.println("输入发件人和收件人昵称,输入0 0为默认昵称");String nick1 = cin.next(),nick2 = cin.next();if (!nick1.equals("0"))ez.setNick(nick1,nick2);System.out.println("输入主题");String sub = cin.next();System.out.println("输入要爬取的网页");String url = cin.next();Downloader down = new Downloader(url);String res = down.getPicURL();ez.setContent(sub,res);System.out.println("输入收件人地址");ez.sendTo(cin.next());System.out.println("发送成功!");cin.close();}catch (Exception e) {e.printStackTrace();System.out.println("GG!");}}}

以上,期待下次更新

Java爬取图片,并将其发送至指定邮箱中相关推荐

  1. iPhone上将短信内容发送到指定邮箱的方法

    iPhone上将短信内容发送到指定邮箱的方法 迄今为止,移动应用安全基本聚焦在以下几个方面,一是移动设备管理BYOD(bring your own device),二是移动恶意软件分析,三是移动设备用 ...

  2. 【爬虫】每天定时爬取网页小故事并发送至指定邮箱

    看题目 ,需要实现三部分工作,第一部分为爬取网页小故事,第二部分为发送至指定邮箱,第三部分为定时启动程序.爬取网页内容可以使用BeautifulSoup库实现,发送邮件可以使用smtplib库实现,定 ...

  3. 【Web技术】网站留言系统开发,及留言信息实时发送至指定邮箱

    [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 关键字:HTML PHP JavaScript CSS 文章目录 [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 0 简述 ...

  4. b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)

    BiLiBiLi Time: 2020年11月6日19:44:58 Author: Yblackd BiLiBiLi BiLiBiLi 介绍 软件架构 安装教程 使用说明 源码下载 BiLiBiLi ...

  5. Linux开机自动获取本机公网IP并发送至指定邮箱

    前言 当我们需要远程连接自己的Linux计算机时,可以使用ssh命令,但是需要我们获取目标计算机的公网ip.以下是使用Python实现的开机自动获取本地并发送至指定邮箱的小脚本. 实现步骤 1.引入库 ...

  6. 数据库统计结果每日定时发送到指定邮箱

    环境RHEL 5 首先安装sendEmail 1.下载SendEmail安装包 wget http://caspian.dotconf.net/menu/Software/SendEmail/send ...

  7. java 爬取图片_使用Java多线程爬取网站图片

    使用Java爬取网站的图片并保存至本地 使用maven导入依赖org.jsoup jsoup 1.11.2 实现代码:import org.jsoup.HttpStatusException; imp ...

  8. [python应用案例] 一.BeautifulSoup爬取天气信息并发送至QQ邮箱

    前面作者写了很多Python系列文章,包括: Python基础知识系列:Python基础知识学习与提升 Python网络爬虫系列:Python爬虫之Selenium+Phantomjs+CasperJ ...

  9. mysql 自动备份发送,Centos定时自动备份MySQL数据库并发送至指定邮箱

    在Centos中使用Cron定时自动备份mysql数据库并通过Mutt发送到指定Gmail邮箱,利用Gmail垃圾邮件策略实现定时删除 { No.1 编写Shell 文件 } // Path /roo ...

最新文章

  1. Matlab与线性代数--矩阵的LU分解
  2. hello first one
  3. mockito_Mockito:无法实例化@InjectMocks字段:类型是接口
  4. yii2.0使用ueditior完成上传单张,多张图片,上传视频等操作
  5. linux 启动两个摄像头,Linux:(多摄像头)如何运行指定的摄像头
  6. 基于EasyNVR二次开发实现业务需求:直接集成EasyNVR播放页面到自身项目
  7. Linux命令 — 设置或查看网络配置命令ifconfig
  8. 中标麒麟共享win7打印机_win10与win7系统电脑通过局域网共享打印机的方法
  9. 快速获得数据库连接字符串的小窍门
  10. JAVA面向对象OOP、类、属性、方法、样例代码
  11. 基于STM32F103自制CMSIS-DAP下载器
  12. 创建Cocos2dx项目两种方法
  13. 手机html怎样取消,手机怎么取消wifi隐藏_手机如何取消隐藏wifi?-192路由网
  14. 华为云鲲鹏云服务器系列的规格,#化鲲为鹏,我有话说#使用华为云鲲鹏弹性云服务器部署文字识别Tesseract...
  15. 2018 Google IO干货摘要及对国内Android开发者的影响
  16. kafka集群搭建教程(使用自带的zookeeper)
  17. 最新PS 2020版发布!逆天黑科技一键P图看哭设计师!
  18. backtrack5实现局域网DNS欺骗
  19. 仿写练习-京东商城导航条
  20. github在线编辑

热门文章

  1. 一举刷新 54 个中文 NLP 任务基准,大模型加持下的EasyDL有多强?
  2. python面试秘诀_Python面试宝典之基础篇-01
  3. 开机后,电脑显示屏无信号怎么办?
  4. python如何对excel批量加密_Python无所不能,真是如此!看它是如何给excel表格批量加密的!-站长资讯中心...
  5. 创建一个Cycle类,它具有子类Unicycle,Bicycle和Tricycle。演示每一个类型的实例都可以经由ride()方法向上转型为Cycle。
  6. 部门换届推文文字_2020义工社换届选举
  7. matlab如何产生两个两位随机整数,产生20个两位随机整数
  8. postgres 命令行建数据库表_Postgresql 查看建表语句 命令
  9. .Net6+Furion+Sqlsugar+SenparcSdk开发微信公众号系列之八:自定义菜单
  10. 手机按上sim卡显示无服务器,无服务是卡的?和手机卡顿并无关联