定时截图并发送邮箱

定时截图并发送邮箱

运行测试:
在这里插入图片描述
收件:
在这里插入图片描述
邮箱必须开启授权,将返回的授权码放在下方setPassword处:
在这里插入图片描述

全部代码:


package com.example.send_mail.service;


import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.imageio.ImageIO;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;



/*
实际上是通过截屏将截图图像保存到本地,
然后通过发送邮件的实现去那个目录拿该图片发送
注意:邮箱需要开启授权见上方第三张图
*/
public class SendMailServiceImpl {

    /*
    截屏配置
     */
    private String fileName;
    private String defaultName="GuiCamera";
    private String imageFormat;//图像文件的格式
    private String defaultImageFormat="jpg";
    Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
    public  SendMailServiceImpl(){
        fileName=defaultName;
        imageFormat=defaultImageFormat;
    }
    public SendMailServiceImpl(String s,String format) {
        fileName=s;
        imageFormat=format;
    }
    
    //截屏的实现
    public void snapshot(){
        try {
            //拷贝屏幕到一个BufferedImage对象screenshot
            BufferedImage screenshot=(new Robot()).createScreenCapture(
                    new Rectangle(0,0,(int)d.getWidth(),(int)d.getHeight()));
            //根据文件前缀变量和文件格式变量,自动生成文件名
            String name=fileName+"."+imageFormat;
            System.out.println(name);
            File f=new File(name);
            //将screenshot对象写入图像文件
            ImageIO.write(screenshot, imageFormat, f);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    //邮件发送的实现
    private JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("smtp.qq.com");
        sender.setPort(587);
        sender.setUsername("xxxxxxxxxxxxxx@qq.com");
        //开启授权,见上方第三章图
        sender.setPassword("ozxfjqocrhiddiee");
        sender.setDefaultEncoding("Utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.timeout", "10000");
        p.setProperty("mail.smtp.auth", "false");
        sender.setJavaMailProperties(p);
        return sender;
    }

	//邮件发送的实现
    public void sendMail(String sdate) throws Exception {
        JavaMailSenderImpl mailSender = createMailSender();
        //mimeMessage为最终发送的
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //messageHelper注入邮件内容的
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        //标题
        messageHelper.setSubject(sdate+"截图");
        //正文
        messageHelper.setText("<p style='color:red'>截图见附件</p>",true);
        //附件
        messageHelper.addAttachment("自动捕获.jpg",new File("C:\\AutoScreenShot\\"+sdate+".png"));
        messageHelper.setTo("xxxxxxxxxxxxxxxxx@qq.com");
        //用谁的账户发,必须是上面createMailSender配好的账户
        messageHelper.setFrom("xxxxxxxxxxxx@qq.com");
        mailSender.send(mimeMessage);
    }


	//主函数测试
    public static void main(String[] args) throws Exception {
        System.out.println("开始运行");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm");
        while (true){
            Date date = new Date();
            String sdate=sdf.format(date);
            SendMailServiceImpl smi=new SendMailServiceImpl("C:\\AutoScreenShot\\"+sdate,"png");
            //截图
            smi.snapshot();
            Thread.sleep(1000);
            //发送邮件
            smi.sendMail(sdate);
            Thread.sleep(1800000);
        }
    }
}



【人生没有白走的路,每一步都算数。加油各位陌生人!】

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以考虑使用Python的matplotlib库来动态生成图表,并使用selenium模拟浏览器操作来实现截图功能。然后,您可以使用Python的定时任务模块如APScheduler来定时执行该脚本。 关于发送邮件,您可以使用Python的smtplib和email模块来实现。具体步骤可以参考以下流程: 1. 生成图表并保存为图片格式 2. 使用selenium模拟浏览器打开图片并进行截图 3. 使用smtplib和email模块来构建邮件内容,包括收件人、主题、正文和附件等信息 4. 发送邮件并附上生成的图片作为附件 以下是一个简单的Python代码示例,可以帮助您实现这个功能: ```python import matplotlib.pyplot as plt from selenium import webdriver import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage from apscheduler.schedulers.blocking import BlockingScheduler def generate_chart(): # 生成图表 x = [1, 2, 3, 4] y = [5, 6, 7, 8] plt.plot(x, y) plt.savefig('chart.png') def capture_screenshot(): # 使用selenium模拟浏览器截图 driver = webdriver.Chrome() driver.get('file:///path/to/chart.png') driver.save_screenshot('screenshot.png') driver.quit() def send_email(): # 发送邮件 msg = MIMEMultipart() msg['From'] = '[email protected]' msg['To'] = '[email protected]' msg['Subject'] = 'Chart and Screenshot' # 邮件正文 text = MIMEText('Please see the attached chart and screenshot.') msg.attach(text) # 图片附件 with open('chart.png', 'rb') as f: chart = MIMEImage(f.read()) chart.add_header('Content-Disposition', 'attachment', filename='chart.png') msg.attach(chart) with open('screenshot.png', 'rb') as f: screenshot = MIMEImage(f.read()) screenshot.add_header('Content-Disposition', 'attachment', filename='screenshot.png') msg.attach(screenshot) # 发送邮件 smtp_server = 'smtp.example.com' smtp_port = 587 username = '[email protected]' password = 'password' with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(username, password) server.sendmail(username, msg['To'], msg.as_string()) # 定时任务 scheduler = BlockingScheduler() scheduler.add_job(generate_chart, 'interval', hours=1) # 每小时生成一次图表 scheduler.add_job(capture_screenshot, 'interval', hours=1) # 每小时截图一次 scheduler.add_job(send_email, 'interval', hours=1) # 每小时发送一次邮件 scheduler.start() ``` 请注意,这只是一个简单的示例。您可以根据自己的需求进行修改和调整。同时,为了确保安全性,请不要在代码中明文存储您的邮箱密码,而应该使用环境变量或者配置文件等方式来管理密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值