码迷,mamicode.com
首页 > 编程语言 > 详细

Java邮件发送与屏幕截屏

时间:2014-08-06 23:13:42      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:邮件   java   邮箱   编程   界面   

前几天七夕情人节孤独寂寞的程序猿闲来没事,花了一两个小时写了个小Demo主要实现Java的Mail发送功能和桌面截屏功能。

首先让我们先看看Java sendMail邮件发送和桌面屏幕截屏功能是怎么实现的基础知识。

一、Java  SendMail邮件发送

首先让我们来看看邮件发送的原理图:

                          bubuko.com,布布扣

JavaMail 是一套sun 提供开发邮件收发程序APIJavaMail编写程序就是邮件客户端程序(和outlookfoxmail功能类似)
* JavaMail开发需要类库 javamail API ,还需要下载 Java Activation Framework (jaf)  ---- javamail API 依赖 jaf
不过在JDK6.0之后开发,只需要导入mail.jar---- rt.jar 提供javax.activation 开发包,但是JDK5.0 之前开发需要导入mail.jar和activation.jar
javax.mail.Message类---------代表邮件本身,可以认为用Messsage类构造一份邮件,不过开发中使用javax.mail.Session类----代表邮件。

javax.mail.Session 类 ----- 代表与服务器连接会话(简单理解连接)

JAVA MAIL 邮件收发四个核心类

1、Message 邮件
2Session 连接会话
3Transport 发送邮件

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();
	}
}


二、截屏功能实现


    截屏比较简单就不一一详说了,当然我的这个截屏功能很简单,连界面神马的都没有,只是简单的截取一下当前屏幕到保存到磁盘中然后再通过send Mail直接发到邮箱,功能很简单,代码如下:

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();
		}
	}

}







Java邮件发送与屏幕截屏,布布扣,bubuko.com

Java邮件发送与屏幕截屏

标签:邮件   java   邮箱   编程   界面   

原文地址:http://blog.csdn.net/itwuchen/article/details/38405005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!