欢迎访问趣闻百科网!
首页 >科技 >JavaMail
JavaMail

JavaMail

(用来处理邮件的编程接口)
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。
JavaMail资料
  • 特点:执行一些常用的邮件传输
  • 简介

    虽然JavaMail是Sun的API之一,但它还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。

    JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载。最新版本是JavaMail1.5.0[1],使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接到移动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

    * 2005.4.14

    */

    import java.util.*;

    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(

    ""

    + 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 用户邮件注册测试 欢迎光临 啦ABC";

    Mail themail = new Mail("smtp.126.com");

    themail.setNeedAuth(true);

    if (themail.setSubject("laabc.com邮件测试") == false)

    return;

    //邮件内容 支持html 如 欢迎光临 啦ABC

    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;

    }

    }

    参考资料

    [1] JavaMail · JavaMail API[引用日期2013-06-04]

  • 上一篇百科:失效转移
  • 下一篇百科:IP反向解析
  • 免责声明:本站部分内容来自于网络或者相关专家观点,本站发表仅供学习参考,如有侵权请联系删除邮箱:lujiutang84414@126.com。