请输入您要查询的百科知识:

 

词条 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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/31 10:57:59