JavaMail 精萃

原创 2012年07月21日 09:42:36

-- Start

JavaMail 简介

JavaMail 是一个用来发送电子邮件的包,Java EE (j2ee.jar) 中包含了该包,但是如果你使用的是Java SE,那么首先你必须下载 JavaMail 包。

 

下载 JavaMail

你可以在 Google 中搜索 JavaMail download,然后到官网去下载最新的 JavaMail 包。然后把 mail.jar 添加到自己的 classpath 中就可以了。值得注意的是,如果你使用的是 Java SE 6 以下的版本,你还需要下载 JavaBeans Activation Framework 包, 然后将 activation.jar 也添加到自己的 classpath 中。

 

邮件协议

通常邮件服务器使用以下一种或多种协议来收发电子邮件。

  • SMTP(Simple Mail Transfer Protocol)
  • POP(Post Office Protocol)
  • IMAP(Internet Message Access Protocol)
  • MIME(Multipurpose Internet Mail Extensions)
  • NNTP (Network News Transport Protocol)

事实上,正是由于 JavaMail 封装了这些协议,从而使我们在收发邮件的时候只需面对 API, 而无需关心协议细节。

 

一个最简单的例子

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Test {
	// 修改此处即可利用自己的邮件服务器来发送邮件
	public static final String HOST = "smtp.163.com";
	public static final String USER = "wave0409";
	public static final String PASSWORD = "*******************";
	
	public static final String ADDRESS = "wave0409@163.com"; // 注意修改此处,千万不要害我
	public static final String SUBJECT = "Test";
	public static final String TEXT = "This is a test mail.";

	public static void main(String[] args) throws Exception {
		try {
			// 设置javaMail属性
			Properties props = new Properties();
			props.put("mail.smtp.host", HOST); // 邮件服务器
			props.put("mail.transport.protocol", "smtp"); // 协议
			props.put("mail.smtp.auth", "true"); // 是否需要认证(用户名,密码)
			
			// 认证 
			Authenticator auth = new Authenticator() {
				@Override
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(USER, PASSWORD);
				}
				
			};

			// 获取session实例
			Session sendMailSession = Session.getInstance(props, auth);

			// 构造邮件
			Message newMessage = new MimeMessage(sendMailSession);
			newMessage.setFrom(new InternetAddress(ADDRESS));
			newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(ADDRESS));
			newMessage.setSubject(SUBJECT);
			newMessage.setSentDate(new Date());
			newMessage.setText(TEXT);

			// 发送邮件
			Transport.send(newMessage);
			System.out.println("发送成功,请注意查收。");
		} catch (MessagingException m) {
			m.printStackTrace();
		}

	}
}

 

更多例子

事实上,利用 JavaMail 还可以做很多事情,如:发送 html 邮件,发送附件,阅读邮件等等。在下载的 JavaMail 包的 demo 文件夹下可以找到更多例子。

 

-- 更多参见:Java EE 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-08-16
-- Written by ShangBo on 2012-07-28
-- End
 

隋唐演义-评书-单田芳

听了近一个月,隋唐演义,的上部,共116段,终于听完了,过瘾,比看电影,电视剧强多了! 这个评书很吸引我,主要: . 单田芳讲述功力深厚,语言诙谐,模仿惟妙惟肖 . 故事本身情节吸引人 ....
  • xhjok
  • xhjok
  • 2011年10月09日 11:08
  • 955

DB2 精萃

---start 古之成大事者,不唯有超世之才,亦唯有坚忍不拔之志也! DB2 认证路线图 在FedaroCore4下安装DB2 Express-C DB2 目录结构 DB2 配置 DB ...
  • shangboerds
  • shangboerds
  • 2009年11月05日 16:50
  • 3274

Oracle 精萃

-- Start Oracle SQL 精萃 Oracle PL/SQL 精萃 -- 声明:转载请注明出处 -- Last edited on 2015-02-06 -- Created ...
  • shangboerds
  • shangboerds
  • 2015年02月06日 19:59
  • 1270

JavaMail设置重要度Header等信息

JavaMail中设置Header的方法: public void setHeader(java.lang.String name,                       java.la...
  • hantiannan
  • hantiannan
  • 2012年04月13日 17:21
  • 5895

JavaMail Jar包更新下载地址

更新下载地址 这个链接目前是JavaMail最新版1.6.0的下载地址 可以看到目前JavaMail到了1.6.0的内测阶段,最新的是到17年的5月3号,按照官方的说法,估计1.6.0的正式版将...
  • shenshibaoma
  • shenshibaoma
  • 2017年06月07日 17:50
  • 2358

maven之javamail操作qq的smtp与imap

参考: java mail 官网 https://java.net/projects/javamail/pages/Home#Samples   maven 添加javamail支持        ...
  • undergrowth
  • undergrowth
  • 2015年06月12日 23:07
  • 3649

JavaMail基本使用

JavaMail基本使用基本概述 JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于J...
  • q547550831
  • q547550831
  • 2016年10月23日 20:10
  • 1407

javaMail邮件发送功能(多收件人,多抄送人,多密送人,多附件)

先看源码,再来理解,可以直接使用! JavaMailWithAttachment.java: private MimeMessage message; private Session...
  • qq741437836
  • qq741437836
  • 2016年08月10日 17:24
  • 5828

javamail只接收新邮件的方法(邮件的UID与MessageID是有区别的)

看原来的链接被封了,还是自己发布下比较好。 最近在做邮件提醒系统,无论是pop3还是imap都没有一个好的方法只接收新邮件  我们只能拿到邮件列表后自几判断,大多是通过邮件的UID进行判断  ...
  • waterdemo
  • waterdemo
  • 2015年09月08日 11:52
  • 3889

JavaMail学习笔记(二)、JavaMail API简介和配置开发环境

一、JavaMail API 简介        JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议...
  • xyang81
  • xyang81
  • 2012年06月19日 01:06
  • 5344
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaMail 精萃
举报原因:
原因补充:

(最多只允许输入30个字)