首页 > 代码库 > Java邮件发送与屏幕截屏

Java邮件发送与屏幕截屏

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

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

一、Java  SendMail邮件发送

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

                          

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=http://www.mamicode.com/'cid:image'>这是一张图片!",>


二、截屏功能实现


    截屏比较简单就不一一详说了,当然我的这个截屏功能很简单,连界面神马的都没有,只是简单的截取一下当前屏幕到保存到磁盘中然后再通过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();
		}
	}

}