一、环境:
下载架包两个。mail-1.4.jar与mailapi.jar,文章最下方有代码与架包下载地址(免费)。
二、代码,以腾讯企业邮箱为例子。
package org.mail; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.internet.*; /** * 本程序用java来实现Email的发送,所用到的协议为:SMTP,端口号为25;
* 方法:用Socket进行实现,打开客户端的Socket,并连接上服务器:
* 如:Socket sockClient = new Socket("smtp.hanyastar.com",23);
* 这表示发件方连接的是QQ邮箱的服务器,端口号为23 * */ public class Email { /** * 整个MIME邮件对象 */ private MimeMessage mimeMsg; /** * 专门用来发送邮件的Session会话 */ private Session session; /** * 封装邮件发送时的一些配置信息的一个属性对象 */ private Properties props; /** * 发件人的用户名 */ private String username; /** * 发件人的密码 */ private String password; /** * 用来实现附件添加的组件 */ private Multipart mp; /** * 发送参数初始化,有的服务器不需要用户验证,所以这里对用户名和密码进行初始化"" * * @param smtp * SMTP服务器的地址,比如要用QQ邮箱,哪么应为:"smtp.hanyastar.com",163为:"smtp.163.com" */ public Email(String smtp) { username = ""; password = ""; // 设置邮件服务器 setSmtpHost(smtp); // 创建邮件 createMimeMessage(); } /** * 设置发送邮件的主机(JavaMail需要Properties来创建一个session对象。 * 它将寻找字符串"smtp.hanyastar.com",属性值就是发送邮件的主机); * * @param hostName */ public void setSmtpHost(String hostName) { System.out.println("设置系统属性:smtp.hanyastar.com = " + hostName); if (props == null) props = System.getProperties(); props.put("mail.smtp.host", hostName); } /** * (这个Session类代表JavaMail 中的一个邮件session. 每一个基于 * JavaMail的应用程序至少有一个session但是可以有任意多的session。 在这个例子中, * Session对象需要知道用来处理邮件的SMTP 服务器。 */ public boolean createMimeMessage() { try { System.out.println("准备获取邮件会话对象!"); // 用props对象来创建并初始化session对象 session = Session.getDefaultInstance(props, null); } catch (Exception e) { System.err.println("获取邮件会话对象时发生错误!" + e); return false; } System.out.println("准备创建MIME邮件对象!"); try { // 用session对象来创建并初始化邮件对象 mimeMsg = new MimeMessage(session); // 是否回执 //mimeMsg.setHeader("Disposition-Notification-To","1"); // 生成附件组件的实例 mp = new MimeMultipart(); } catch (Exception e) { System.err.println("创建MIME邮件对象失败!" + e); return false; } return true; } /** * 设置SMTP的身份认证 */ public void setNeedAuth(boolean need) { System.out.println("设置smtp身份认证:mail.smtp.auth = " + need); if (props == null) { props = System.getProperties(); } if (need) props.put("mail.smtp.auth", "true"); else props.put("mail.smtp.auth", "false"); } /** * 进行用户身份验证时,设置用户名和密码 */ public void setNamePass(String name, String pass) { System.out.println("程序得到用户名与密码"); username = name; password = pass; } /** * 设置邮件主题 * * @param mailSubject * @return */ public boolean setSubject(String mailSubject) { System.out.println("设置邮件主题!"); try { mimeMsg.setSubject(mailSubject); } catch (Exception e) { System.err.println("设置邮件主题发生错误!"); return false; } return true; } /** * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8 * * @param mailBody * @return */ public boolean setBody(String mailBody) { try { System.out.println("设置邮件体格式"); BodyPart bp = new MimeBodyPart(); bp.setContent( " html; charset=UTF-8>" + mailBody, "text/html;charset=UTF-8"); // 在组件上添加