一 邮件的发送过程
① 发件人编辑邮件
② 邮件发送至发送账号所有的SMTP服务器
③ 如果发送账号和接收账号不在同一SMTP服务器,发送账号所属的服务器负责将邮件发至收件人所属SMTP服务器
④ 收件人查看邮件时,收件人所属服务器把邮件传给收件人的客户端
从而使用Java开发程序所需做的事情:创建和编辑邮件,发送邮件至发件人所属服务器
二 邮件的基本组成内容
如上图所示,邮件的主要组成部分有
发件人,收件人,抄送,密送,主题,附件,正文
正文是用富文本编辑器编辑,即可以是无格式文本,也可以是html格式(含内联图片)
三 基于Apache Commons Email 发送邮件
1 开发包的引入
Apache Commons Email 是对JavaMail的包装,所以需要引入JavaMail所需的jar包,同时引入自身的jar包。
activation.jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html
jdk6及以上版本已包含该jar无需引入
mail.jar包下载地址:https://java.net/projects/javamail/downloads
JavaEE包含该jar包无需引入
apache commons email 下载地址:http://commons.apache.org/proper/commons-email/download_email.cgi
2 常用API简介
上述类是对邮件对于正文和附件不同表现形式的实现,特定的类增加特定的功能。
Email类是对除了正文和附件的其他内容的实现,
SimpleEmail类添加无格式文本,
MultipartEmail添加附件,EmailAttachment是对附件的封装,
HtmlEmail添加显示html格式功能
ImageHtmlEmail实现内联图片,HtmlEmail也可以实现内联图片显示,但是需要cid,而ImageHtmlEmail无需cid
三 示例代码
下面提供一个开发常用的示例代码
public void sendEmail() throws EmailException{ //创建正文内容以html格式显示的邮件 HtmlEmail email = new HtmlEmail(); //设置环境参数 email.setHostName("smtp.sina.com"); email.setCharset("UTF-8"); //设置连接服务器的用户名密码 email.setAuthentication("account", "password"); //设置邮件的发件人和收件人 email.setFrom("email account"); //也可以调用email.setTo(aCollection)设置多个接收人, //或者多次调用email.addTo email.addTo("recepient"); //设置主题 email.setSubject("Apache Email发送邮件"); //添加附件 email.attach(new File("G:\\workspace\\javamail\\bin\\mail.properties")); email.attach(new File("G:\\workspace\\javamail\\bin\\NOTICE.txt")); //添加html String cid = email.embed(new File("C:\\Documents and Settings\\Administrator\\桌面\\ApacheEmail类关系图.png")); String aHtml = "<html>" + "<span style=‘color:red;‘>这是一封使用Apache Email实现的使用程序发送Email</span>" + "<br>" + "<img src=‘cid:"+cid+"‘ alt=‘找不到图片‘>" + "</html>"; email.setHtmlMsg(aHtml); //设置文本信息,当邮箱客户端不支持html格式信息时显示 email.setTextMsg("对不起,您的邮箱客户端不支持显示html格式内容"); //发送邮件 email.send(); }
效果图:
四 常用邮箱发送邮件说明
后期继续说明
本文出自 “philipzone” 博客,请务必保留此出处http://philipzone.blog.51cto.com/8856558/1795142
原文:http://philipzone.blog.51cto.com/8856558/1795142