仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1163|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA编程:用JavaMail API编写可带附件的邮件发送...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:42:48 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。程序使用Sun公司供应的JavaMailAPI能够很便利的开辟邮件发送程序。大概你已能够使用它来发送一段复杂的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在复杂先容了JavaMail以后,具体解说了一段完全的送信的JavaBean及一个非常轻便的servlet。

(没有装载JavaMailAPI的读者,能够到此站点下载,并依照Readme.txt设置好ClassPath)
1、JavaMail中一些我们必要的类
1.Properties

JavaMail必要Properties来创立一个session对象,其属性值就是发送邮件的主机,如:

Propertiesprops=newProperties();
props.put("mail.smtp.host","smtp.xxxx.com");//能够换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。

2.Session

一切的基于JavaMail的程序都最少必要一个或全体的对话方针。

Sessionsession=Session.getInstance(props,null);

3.MimeMessage

信息对象将把你所发送的邮件实在的反应出来。

MimeMessagemsg=newMimeMessage(session);

4.Transport

邮件的发送是由Transport来完成的:

Transport.send(msg);

2、我们本人创立的可发送附件的类
importjava.util.*;
importjava.io.*;
importjavax.mail.*;
importjavax.mail.internet.*;
importjavax.activation.*;
publicclassMail{
//界说发件人、收件人、主题等
Stringto="";
Stringfrom="";
Stringhost="";
Stringfilename="";
Stringsubject="";
//用于保留发送附件的文件名的汇合
Vectorfile=newVector();
//做一个能够传发件人等参数的机关
publicMail(Stringto,Stringfrom,StringsmtpServer,Stringsubject){
//初始化发件人、收件人、主题等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//该办法用于搜集附件名
publicvoidattachfile(Stringfname){
file.addElement(fname);
}
//入手下手发送函件的办法
publicbooleanstartSend(){
//创立Properties对象
Propertiesprops=System.getProperties();
//创立函件服务器
props.put("mail.smtp.host",host);
//失掉默许的对话对象
Sessionsession=Session.getDefaultInstance(props,null);try{
//创立一个动静,并初始化该动静的各项元素
MimeMessagemsg=newMimeMessage(session);
msg.setFrom(newInternetAddress(from));
InternetAddress[]address={newInternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//前面的BodyPart将到场到此处创立的Multipart中
Multipartmp=newMimeMultipart();
//使用列举器便利的遍历汇合
Enumerationefile=file.elements();
//反省序列中是不是另有更多的对象
while(efile.hasMoreElements()){
MimeBodyPartmbp=newMimeBodyPart();
//选择出每个附件名
filename=efile.nextElement().toString();
//失掉数据源
FileDataSourcefds=newFileDataSource(filename);
//失掉附件自己并至进BodyPart
mbp.setDataHandler(newDataHandler(fds));
//失掉文件名一样至进BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走汇合中的一切元素
file.removeAllElements();
//Multipart到场到函件
msg.setContent(mp);
//设相信件头的发送日期
msg.setSentDate(newDate());
//发送函件
Transport.send(msg);
}catch(MessagingExceptionmex){
mex.printStackTrace();
Exceptionex=null;
if((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
returnfalse;
}
returntrue;
}
}

3、一个复杂的servlet
importjavax.servlet.*;
importjavax.servlet.http.*;
importjava.io.*;
publicclassSendMailextends
HttpServletimplementsSingleThreadModel{
publicvoidinit(ServletConfigConf)
throwsServletException{
super.init(Conf);
}
publicvoiddoPost(HttpServletRequest
Req,HttpServletResponseRes)
throwsServletException,IOException{
try{
//实例化方才我们做的类,并按其机关传进响应的参数
Mailsendmail=newMail("zhang@263.net",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoiddestroy(){
}
}

4、小结
至此,你已能够在邮件中增加附件了,并且能够是多个。像如许,将呼应与逻辑相分别对代码的扩大和保护是相称有优点的。若Beans与servlet不在统一个包下,别忘了“import”。

市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
蒙在股里 该用户已被删除
沙发
 楼主| 发表于 2015-2-8 23:32:01 | 显示全部楼层
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 04:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表