欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java,

来源: javaer 分享于  点击 19270 次 点评:6

java,


JavaMail

登录到:http://java.sun.com/products/javamail/downloads/index.html站点下载JavaMail的版本目前最新的是JavaMail 1.4.4

下载后解压使用其中的mail.jar包,该文件是JavaMail的全功能JAR包。

JavaMail还依赖于另外一个组件:JAF(JavaBeans Activation franmework) 还需要下载该包http://java.sun.com/products/jaf/downlowads/index.html,下载后使用Activation.jar包。该文件就是JAF组件的二进制包,将该包JAR添加到项目的类加载路径即可。

JavaMail的常用API

(1)javax.mail.Session

Session类代表JavaMail的一次邮件会话:

=》Session.getDefaultInstance(Properties props)

=》Session.getDefaultInstance(Properties props,Authenticator a)

(2)java.mail.Transport 使用Transoprt完成邮件的发送

Transport.send(MimeMessage msg)

Transport有一个直接子类:com.sun.mail.smtp.SMTPTransport,实现了Transport这个抽象类

(3)javax.mail.Store

该类是实现邮件协读/写/监视/查找等操作

Store store = session.getStore(java.lang.String protocol);

store.connect(popserver,username,passwrod);

(4)javax.mail.Folder

Folder用于分级组织邮件,代表邮件系统的一个文件夹

Folder fo = store.getFolder("INBOX");

fo.open(Folder.READ_ONLY);

(5)Java.mail.MimeMessage

该对象是实际电子邮件对象

该类的含有一下属性:

protected byte[] content:该邮件内容的字节数组

protected InternetHeaders header:返回保存该E-mail文件头的对象

方法:

void addFrom(Address[] addresses):为该E-mail设置发件人地址

void addHeader(String name,String value):在E-mail 的文件头内容上增加value;

void addRecipients(Message.RecipientType type Address[] address);指定类型的收件地址

Address[] getFrom();返回发件人地址列表

void setContent(Multipart mp):为该E-mail设置内容

(6)javax.mail.Address

该对象用于确定发件人和收件人的地址,和message一样

(7)javax.mail.Multipart

是用于保存电子邮件内容的容器,它定义了增加和删除/获得电子邮件的方法。

(8)javax.mail.BodyPart

该类表示邮件内容的一个部分。它是一个抽象类,通常使用其子类:javax.mail.Internet.MimeBodyPart.

(9)javax.activation.DataHandler

该类允许邮件信息包含非文本的BodyPart对象。

(10)java.activation.FileDataSource

该类代表本地文件和服务器可以直接访问的资源。

(11)

该类代表一个远程资源。其他类似与FileDataSource。但实际上不如FileDataSource的常用





package email;



import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;



public class SendMail {



// 收件人地址

private String sendTo;

// 发送人地址

private String sendFrom;

// SMTP服务

private String smtpServer;

// 登录SMTP用户

private String userName;

//密码

private String pwd;

//邮件主题

private String subject;

//邮件内容

private String content;

//附件

List<String> attachments = new ArrayList<String>();

public String getSendTo() {

return sendTo;

}

public void setSendTo(String sendTo) {

this.sendTo = sendTo;

}

public String getSendFrom() {

return sendFrom;

}

public void setSendFrom(String sendFrom) {

this.sendFrom = sendFrom;

}

public String getSmtpServer() {

return smtpServer;

}

public void setSmtpServer(String smtpServer) {

this.smtpServer = smtpServer;

}

public String getUserName() {

return userName;

}

public void setUsername(String userName) {

this.userName = userName;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

public String getSubject() {

return subject;

}

public void setSubject(String subject) {

this.subject = subject;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

public SendMail(String sendTo, String sendFrom, String smtpServer,

String userName, String pwd, String subject, String content,

List<String> attachments) {

this.sendTo = sendTo;

this.sendFrom = sendFrom;

this.smtpServer = smtpServer;

this.userName = userName;

this.pwd = pwd;

this.subject = subject;

this.content = content;

this.attachments = attachments;

}



public SendMail() {

}

/**

* 转换中文格式

* @param strText

* @return

*/

public String transferChinese(String strText){

try {

strText=MimeUtility.encodeText(new String(strText.getBytes(),"UTF-8"),"UTF-8","B");

} catch (Exception e) {

// TODO: handle exception

}

return strText;

}

public void attachfile(String name){

attachments.add(name);

}

//发送邮件

public boolean send(){

//创建邮件Session所需要的properties

Properties prop=new Properties();

prop.put("mail.smtp.host", smtpServer);

prop.put("mail.smtp.auth", "true");

//以匿名内部类的形式创建登录服务器的认证对象

Session sess = Session.getDefaultInstance(prop,

new Authenticator()

{

public PasswordAuthentication getPasswordAuthentication(){

return new PasswordAuthentication(userName, pwd);

}

});


//构造MimeMessage崩设置相关属性

MimeMessage mmsg = new MimeMessage(sess);


try {

//设置发送人

mmsg.setFrom(new InternetAddress(sendFrom));

//设置收信人

InternetAddress[] addresses = {new InternetAddress(sendTo)};

mmsg.setRecipients(Message.RecipientType.TO, addresses);

//设置主题

subject = transferChinese(subject);

mmsg.setSubject(subject);

//构造Multipart

Multipart mp = new MimeMultipart();

//向Multipart添加正文

MimeBodyPart mbpContent = new MimeBodyPart();

mbpContent.setText(content);

//将BodyPart添加到Multipart中

mp.addBodyPart(mbpContent);


//向Multipart中添加附件

//遍历集合

for (String efile : attachments) {

MimeBodyPart mbp = new MimeBodyPart();

//以文件创建FileDataSource对象

FileDataSource fds=new FileDataSource(efile);

mbp.setDataHandler(new DataHandler(fds));

mbp.setFileName(fds.getName());

mp.addBodyPart(mbp);

}

attachments.clear();//清空附件表

mmsg.setContent(mp);

mmsg.setSentDate(new Date());//设置发送日期

Transport.send(mmsg);


} catch (AddressException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

} catch (MessagingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return false;

}

return true;

}


public static void main(String[] args) {

SendMail mail = new SendMail();

mail.setSmtpServer("smtp.sina.com");

mail.setUsername("spring_test");

mail.setPwd("123abc");

//收件人

mail.setSendTo("1976001007@qq.com");

mail.setSendFrom("spring_test@sina.com");

mail.setSubject("测试邮件");

mail.setContent("这是一个测试邮件,请勿回信,谢谢");

mail.attachments.add("src/email/SendMail.java");

mail.attachments.add("src/email/Test.java");

System.out.println("正在发送。。。。。");

if(mail.send()){

System.out.println("~~~发送成功~~~");

}else {

System.out.println("发送失败");

}


}

}

相关文章

    暂无相关文章
相关栏目:

用户点评