仓酷云

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

[学习教程] JAVA网站制作之利用JAVAMAIL发邮件的一个例子

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。发邮件起首引进j2ee的包路径到ClassPath,已安装Jbuilder的能够在它的安装路径lib目次下找
到mail.jar,activation.jar,将这两个包到场体系的情况变量,那末即便不必JBuilder开辟的话也能够
利用了.

程序:

importjava.io.*;
importjava.util.*;
importjavax.mail.*;
importjavax.mail.internet.*;

/**
*<p>Title:浅易MailBean</p>
*<p>Description:供应烦琐的Mail发送功效(/p>
*<p>Copyright:Copyright(c)2003</p>
*@version1.0
*/

classExtendString{
publicExtendString(){
}
/**
往失落字符串两头的空缺字符,并将字符串转化为中国的尺度字符gb2312的字符串.
*/
publicStringCS(Stringstr){//往失落字符串2真个空缺字符
try{
if(str==null)
return"";
str=str.trim();
if(str==null)
return"";
str=newString(str.getBytes("8859_1"),"GBK");
}
catch(Exceptione){
System.out.println(e);
}
returnstr;
}

}

publicclassSendMail
{
privateStringerrMsg="";
privateExtendStringExStr=newExtendString();

privateStringsender="";//发件人地点
privateStringsmtpHost="";//邮件发送服务器(smtp)
privateStringuser="";//登任命户名
privateStringpassword="";//登录暗码

privateStringsubject="";//mail主题

publicSendMail()
{
this.setPropertiesAttri();
}

privatevoidsetPropertiesAttri()
{
try
{
InputStreamis=getClass().getResourceAsStream("MailServer.properties");
Propertiesprop=newProperties();
prop.load(is);

this.setSmtpHost(prop.get("SmtpHost").toString());
this.setUser(prop.get("User").toString());
this.setPassword(prop.get("Password").toString());
this.setSender(prop.get("Sender").toString());
this.setSubject(ExStr.CS(prop.get("Subject").toString()));
}
catch(Exceptionex)
{
System.err.println("ex1insendmail.java:"+ex.toString());
}
}
/**设置发件人地点*/

publicvoidsetSender(Stringsender)
{
this.sender=sender;
}

publicStringgetSender()
{
returnsender;
}

/**设置邮件发送服务器(smtp)*/
publicvoidsetSmtpHost(StringsmtpHost){this.smtpHost=smtpHost;}
publicStringgetSmtpHost(){returnsmtpHost;}

/**设置登任命户名*/
publicvoidsetUser(Stringuser)
{
this.user=user;
}
publicStringgetUser()
{
returnuser;
}

/**设置登录暗码*/
publicvoidsetPassword(Stringpassword)
{
this.password=password;
}
publicStringgetPassword()
{
returnpassword;
}

/**设置mail主题*/
publicvoidsetSubject(Stringsubject)
{
this.subject=subject;
}
publicStringgetSubject()
{
returnsubject;
}

/**
*利用smtp发送邮件主程序
*@throwsMessagingExceptionmail发送失利
*/
publicvoidsmtp(Stringreceiver,Stringcontent)throwsMessagingException
{
if(smtpHost==null)thrownewMessagingException("smtpHostnotfound");
if(user==null)thrownewMessagingException("usernotfound");
if(password==null)thrownewMessagingException("passwordnotfound");

Propertiesproperties=newProperties();
properties.put("mail.smtp.host",smtpHost);//设置smtp主机
properties.put("mail.smtp.auth","true");//利用smtp身份考证

Sessionsession=Session.getDefaultInstance(properties,
newAuthenticator(){
publicPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication(user,password);
}
});

//取得邮件会话对象
MimeMessagemimeMsg=newMimeMessage(session);//创立MIME邮件对象
if(sender!=null)//设置发件人地点
{
mimeMsg.setFrom(newInternetAddress(sender));
}
if(receiver!=null)//设置收件人地点
{
mimeMsg.setRecipients(Message.RecipientType.TO,parse(receiver));
}
if(subject!=null)//设置邮件主题
{
mimeMsg.setSubject(subject,"GBK");
}
MimeBodyPartpart=newMimeBodyPart();//mail内容部分
part.setText(content==null?"":content,"GBK");

//设置邮件格局为htmlcqc
part.setContent(content.toString(),"text/html;charset=GBK");
Multipartmultipart=newMimeMultipart();
multipart.addBodyPart(part);//在Multipart中增添mail内容部分
mimeMsg.setContent(multipart);//增添Multipart到信息体
mimeMsg.setSentDate(newDate());//设置发送日期
Transport.send(mimeMsg);//发送邮件
}

/**剖析地点汇合字符串*/
privateInternetAddress[]parse(StringaddressSet)throwsAddressException
{
ArrayListlist=newArrayList();
StringTokenizertokens=newStringTokenizer(addressSet,";");
while(tokens.hasMoreTokens())
{
list.add(newInternetAddress(tokens.nextToken().trim()));
}
InternetAddress[]addressArray=newInternetAddress[list.size()];
list.toArray(addressArray);
returnaddressArray;
}

/**
*供内部挪用的接口
*/

publicbooleansendMails(Stringmail,Stringcontent)
{
intmailLen=0;
intcontentLen=0;
if(mail==null||content==null)
{
returnfalse;
}

try
{
this.smtp(mail,content);
}
catch(Exceptionex)
{
System.err.println("ex2insendmail.java:"+ex.toString());
}

returntrue;
}

publicstaticvoidmain(String[]args)
{
SendMailmail=newSendMail();
Stringemail="feng_lei@ecfounder.com;ladofwind@163.com";
Stringcontent="账号:123暗码:123<br/>感激您注册!<br/><ahref=http://www.xxxx.com.cntarget=_blank>www.xxxx.com.cn</a><br/>此致<br/>xxxx<br/>克日";
try
{
mail.sendMails(email,content);
}
catch(Exceptionex)
{
System.err.println("ex33:"+ex.toString());
}
}


}

编译经由过程后,在class文件的目次下创建一个文本文件MailServer.properties,
格局:
SmtpHost=smtp.163.com
User=user
Password=pwd
Sender=csdn@csdn.com
Subject=Hello


运转程序便可完成邮件发送!



你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-21 06:08:02 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
柔情似水 该用户已被删除
板凳
发表于 2015-1-21 06:08:02 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
因胸联盟 该用户已被删除
地板
发表于 2015-1-24 14:51:24 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
不帅 该用户已被删除
5#
发表于 2015-2-3 22:06:43 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
小魔女 该用户已被删除
6#
发表于 2015-2-9 05:32:55 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
海妖 该用户已被删除
7#
发表于 2015-2-27 00:50:35 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
深爱那片海 该用户已被删除
8#
发表于 2015-3-12 15:35:47 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
乐观 该用户已被删除
9#
发表于 2015-3-19 23:27:15 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
再现理想 该用户已被删除
10#
发表于 2015-4-3 08:30:08 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-15 03:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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