首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识。
首先让我们来看看邮件发送的原理图:
JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook、foxmail功能类似)
javax.mail.Session 类 ----- 代表与服务器连接会话(简单理解连接)
JAVA MAIL 邮件收发四个核心类
1、Message 邮件4、Store 收取邮件
发送邮件编程
1、创建与邮件发送服务器连接Session(需要使用Properties类来设置配置与服务器连接的参数)
2、编写邮件内容 Message * 符合邮件内容格式RFC822文档 setFrom setRecipients setSubject setText 当然如果有图片或者附件那就要使用 MimeBodyPart和MimeMultipart这两个类了将几个部分组合在一起
3、使用Transport工具类 进行身份验证和发送邮件
原理和基础使用步骤讲完了就直接贴代码了
public class SendMail { public void sendMailDemo() throws Exception { Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.host", "smtp.qq.com"); props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.debug", "true"); Session session = Session.getDefaultInstance(props); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("xxxxxxxx@qq.com")); message.addRecipients(Message.RecipientType.TO, "xxxxxxxx@qq.com"); message.setSubject("这是来自Java程序员的诚挚问候,桌面截图"); // 文本部分 MimeBodyPart textPart = new MimeBodyPart(); textPart.setContent("这是来自Java程序的诚挚问候!<img src='cid:image'>这是一张图片!", "text/html;charset=UTF-8"); // 内镶嵌图片部分 MimeBodyPart imagePart = new MimeBodyPart(); // 吧磁盘上的文件读到邮件中,借助jaf框架 DataHandler dh = new DataHandler(new FileDataSource("e:\\2.jpg")); imagePart.setDataHandler(dh); imagePart.setContentID("image"); // 将文本部分和图片部分合体 MimeMultipart mpart = new MimeMultipart(); mpart.addBodyPart(textPart); mpart.addBodyPart(imagePart); mpart.setSubType("related"); message.setContent(mpart); message.saveChanges(); Transport transport=session.getTransport("smtp"); transport.connect("xxxxxxxxxx@qq.com", "xxxxxxxx"); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } }
public class ScreenShot { public void screeShot(){ try { //获取电脑屏幕的大小 Toolkit tk=Toolkit.getDefaultToolkit(); Dimension ds=tk.getScreenSize(); int height=(int) ds.getHeight(); int width=(int) ds.getWidth(); //拷贝屏幕到一个BufferedImage对象bi中 Robot robot = new Robot(); BufferedImage bi=robot.createScreenCapture(new Rectangle(width, height)); //将bi对象写入图像文件中,并保存到磁盘上 ImageIO.write(bi, "jpg",new File("E:\\2.jpg")); } catch (IOException e) { e.printStackTrace(); } catch (AWTException e) { e.printStackTrace(); } } }
原文地址:http://blog.csdn.net/itwuchen/article/details/38405005