词条 | JavaMail |
释义 | JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 简介虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。 JavaMail是可选包,因此如果需要使用的话你需要首先从java.sun.com下载。目前最新版本是JavaMail1.4,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。这样JavaMail就安装好了。 JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 另外很好的实现了JavaMail API的框架有James、Spring Mail。 实例package fss.base; /** * @author kangkang * http://corncc.ikdiy.com * 2005.4.14 */ import java.util.*; import javax.mail.*; import javax.mail.internet.*; import java.util.Date; import javax.activation.*; import java.io.*; public class Mail { // 21-30行把本程序所用变量进行定义。 具体在main中对它们赋植。 private MimeMessage mimeMsg; // MIME邮件对象 private Session session; // 邮件会话对象 private Properties props; // 系统属性 private boolean needAuth = false; // smtp是否需要认证 private String username = ""; // smtp认证用户名和密码 private String password = ""; private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成//MimeMessage对象 public Mail(String smtp) { setSmtpHost(smtp); createMimeMessage(); } /** * @param hostName * String */ public void setSmtpHost(String hostName) { System.out.println("设置系统属性:mail.smtp.host = " + hostName); if (props == null) props = System.getProperties(); // 获得系统属性对象 props.put("mail.smtp.host", hostName); // 设置SMTP主机 } /** * @return boolean * */ public boolean createMimeMessage() { try { System.out.println("准备获取邮件会话对象!"); session = Session.getDefaultInstance(props, null); // 获得邮件会话对象 } catch (Exception e) { System.err.println("获取邮件会话对象时发生错误!" + e); return false; } System.out.println("准备创建MIME邮件对象!"); try { mimeMsg = new MimeMessage(session); // 创建MIME邮件对象 mp = new MimeMultipart(); // mp 一个multipart对象 // Multipart is a container that holds multiple body parts. return true; } catch (Exception e) { System.err.println("创建MIME邮件对象失败!" + e); return false; } } /** * @param need * boolean * */ 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"); } } /** * * @param name * String * * @param pass * String * */ public void setNamePass(String name, String pass) { System.out.println("程序得到用户名与密码"); username = name; password = pass; } /** * * @param mailSubject * String * @return boolean * */ public boolean setSubject(String mailSubject) { System.out.println("设置邮件主题!"); try { mimeMsg.setSubject(mailSubject); return true; } catch (Exception e) { System.err.println("设置邮件主题发生错误!"); return false; } } /** * * @param mailBody * String * */ public boolean setBody(String mailBody) { try { System.out.println("设置邮件体格式"); BodyPart bp = new MimeBodyPart(); bp.setContent( "<meta http-equiv=Content-Type content=text/html; charset=gb2312>" + mailBody, "text/html;charset=GB2312"); mp.addBodyPart(bp); return true; } catch (Exception e) { System.err.println("设置邮件正文时发生错误!" + e); return false; } } /** * * @param name * String * @param pass * String */ public boolean addFileAffix(String filename) { System.out.println("增加邮件附件:" + filename); try { BodyPart bp = new MimeBodyPart(); FileDataSource fileds = new FileDataSource(filename); bp.setDataHandler(new DataHandler(fileds)); bp.setFileName(fileds.getName()); mp.addBodyPart(bp); return true; } catch (Exception e) { System.err.println("增加邮件附件:" + filename + "发生错误!" + e); return false; } } /** * @param name * String * * @param pass * String */ public boolean setFrom(String from) { System.out.println("设置发信人!"); try { mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人 return true; } catch (Exception e) { return false; } } /** * @param name * String * * @param pass * String * */ public boolean setTo(String to) { System.out.println("设置收信人"); if (to == null) return false; try { mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress .parse(to)); return true; } catch (Exception e) { return false; } } /** * @param name * String * * @param pass * String */ public boolean setCopyTo(String copyto) { System.out.println("发送附件到"); if (copyto == null) return false; try { mimeMsg.setRecipients(Message.RecipientType.CC, (Address[]) InternetAddress.parse(copyto)); return true; } catch (Exception e) { return false; } } /** * @param name * String * * @param pass * String * */ public boolean sendout() { try { mimeMsg.setContent(mp); mimeMsg.saveChanges(); System.out.println("正在发送邮件...."); Session mailSession = Session.getInstance(props, null); Transport transport = mailSession.getTransport("smtp"); // ??? transport.connect((String) props.get("mail.smtp.host"), username, password); transport.sendMessage(mimeMsg, mimeMsg .getRecipients(Message.RecipientType.TO)); // transport.send(mimeMsg); System.out.println("发送邮件成功!"); transport.close(); return true; } catch (Exception e) { System.err.println("邮件发送失败!" + e); return false; } } /** * Just do it as this */ public static void main(String[] args) { String mailbody = "http://www.laabc.com 用户邮件注册测试 <font color=red>欢迎光临</font> <a href=\\"http://www.laabc.com\\">啦ABC</a>"; Mail themail = new Mail("smtp.126.com"); themail.setNeedAuth(true); if (themail.setSubject("laabc.com邮件测试") == false) return; //邮件内容 支持html 如 <font color=red>欢迎光临</font> <a href=\\"http://www.laabc.com\\">啦ABC</a> if (themail.setBody(mailbody) == false) return; //收件人邮箱 if (themail.setTo("shengshuai@126.com") == false) return; //发件人邮箱 if (themail.setFrom("shengshuai@126.com") == false) return; //设置附件 //if (themail.addFileAffix("#######") == false) //return; // 附件在本地机子上的绝对路径 themail.setNamePass("用户名", "密码"); // 用户名与密码 if (themail.sendout() == false) return; } } |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。