放大啦资源网 http://www.fangdala.com
当前位置首页 > 百科资料> 正文

javamail

2023-02-17 22:44:49 暂无评论 百科资料

JavaMail,顾名思义,来自提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理em360百科ail的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

  • 中文名称 JavaMail
  • 含义 处理电子邮件相关的编程接口
  • 作用 用来处理email的API
  • 特点 执行一些常用的邮件传输

简介

  虽然JavaMa名频厚未热il是Sun的AP来自I之一,但它还没有被加在标准的java开发360百科工具包中(Java Development Kit),这就意味着你在使用前流冷错牛变又必须另外下载JavaMa达孩置唱花器么模il文件。除此以外,你还需要有Sun的JavaBeans 足吃稳月销抗Activation Framework (JAF)。JavaBeans Activation Framew静消投益映鲜ork的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Wi考镇则非术安取ndows 2000下使用需要指持英实束叫句案分定这些文件的路径,在其它的操作系统上也类似。

  JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载。最新版本是JavaMail1.5.0 ,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASS现零PATH的话,可以直板争普鲁粉接把他们的jar包直接到移动JAVA_HOME/lib/ext下。这样Java齐使根盐研Mail就安装好了。

  JavaMail包中用于处理电子邮件的核心类是笑处钱毫固界英厂被机:Session,Message,Address,Authentica致击兰想殖及鸡工良吸犯tor,Transport,S激载下水情列tore,Folder等。Session定义了一个基本的邮件会话,它需要从P课革族规roperties中读取类似于邮件服务器,用户名和密码等信息。

  另外很好的实现了JavaMail API的框架有James、Spring Mail。

实例

  package fss.base;

  /**

  * @author kangkang

  * http://corncc.ikdiy.com

  * 2005.4.14

  */

  决便样油案import java.ut木推东il.*;

  import javax.mail.*;

  import javax.mail.internet.*;

  import java.util.Date;

  import javax.activation.*;

  importjava.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;

  }

  }

猜你喜欢