|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。发送邮件/*
在java版常常看到有人问怎样用javamail发送邮件?怎样吸收邮件?怎样会见多个文件夹等。成绩零星,而汗青的复兴早已吞没在成绩的陆地当中。
自己之前所做过一个java项目,个中包括有WebMail功效,现在为用java完成而对javamail探索了一段工夫,总算有点劳绩。看到论坛中的常常有此方面的成绩,因而把我的一些履历帖出来,但愿对人人有些匡助。
此篇仅先容用javamail完成发送邮件功效,个中触及smtp认证,邮件附件发送,及HTML内容邮件等。
别的有关多邮箱的完成,吸收POP3邮件及IMAP等外容,将在后续文章中先容。
以下程序必要:javamail,JAF包,j2ee.jar包括了上述两个包,倡议人人安装J2SDKEE或间接拷贝j2ee.jar,将其增加到jbuilder的library中,或体系ClassPath中
*/
packagecom.me.util.mail;
/**
*@authorZhangkunaistill@msn.com
*@version1.0
*/
importjava.util.*;
importjavax.mail.*;
importjavax.mail.internet.*;
importjava.util.Date;
importjavax.activation.*;
importjava.io.*;
importcom.me.util.*;
publicclasssendMail{
privateMimeMessagemimeMsg;//MIME邮件对象
privateSessionsession;//邮件会话对象
privatePropertiesprops;//体系属性
privatebooleanneedAuth=false;//smtp是不是必要认证
privateStringusername="";//smtp认证用户名和暗码
privateStringpassword="";
privateMultipartmp;//Multipart对象,邮件内容,题目,附件等外容均增加到个中后再天生MimeMessage对象
/**
*
*/
publicsendMail(){
setSmtpHost(getConfig.mailHost);//假如没有指定邮件服务器,就从getConfig类中猎取
createMimeMessage();
}
publicsendMail(Stringsmtp){
setSmtpHost(smtp);
createMimeMessage();
}
/**
*@paramhostNameString
*/
publicvoidsetSmtpHost(StringhostName){
System.out.println("设置体系属性:mail.smtp.host="+hostName);
if(props==null)props=System.getProperties();//取得体系属性对象
props.put("mail.smtp.host",hostName);//设置SMTP主机
}
/**
*@returnboolean
*/
publicbooleancreateMimeMessage()
{
try{
System.out.println("筹办猎取邮件会话对象!");
session=Session.getDefaultInstance(props,null);//取得邮件会话对象
}
catch(Exceptione){
System.err.println("猎取邮件会话对象时产生毛病!"+e);
returnfalse;
}
System.out.println("筹办创立MIME邮件对象!");
try{
mimeMsg=newMimeMessage(session);//创立MIME邮件对象
mp=newMimeMultipart();
returntrue;
}
catch(Exceptione){
System.err.println("创立MIME邮件对象失利!"+e);
returnfalse;
}
}
/**
*@paramneedboolean
*/
publicvoidsetNeedAuth(booleanneed){
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");
}
}
/**
*@paramnameString
*@parampassString
*/
publicvoidsetNamePass(Stringname,Stringpass){
username=name;
password=pass;
}
/**
*@parammailSubjectString
*@returnboolean
*/
publicbooleansetSubject(StringmailSubject){
System.out.println("设置邮件主题!");
try{
mimeMsg.setSubject(mailSubject);
returntrue;
}
catch(Exceptione){
System.err.println("设置邮件主题产生毛病!");
returnfalse;
}
}
/**
*@parammailBodyString
*/
publicbooleansetBody(StringmailBody){
try{
BodyPartbp=newMimeBodyPart();
bp.setContent("<metahttp-equiv=Content-Typecontent=text/html;charset=gb2312>"+mailBody,"text/html;charset=GB2312");
mp.addBodyPart(bp);
returntrue;
}
catch(Exceptione){
System.err.println("设置邮件注释时产生毛病!"+e);
returnfalse;
}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleanaddFileAffix(Stringfilename){
System.out.println("增添邮件附件:"+filename);
try{
BodyPartbp=newMimeBodyPart();
FileDataSourcefileds=newFileDataSource(filename);
bp.setDataHandler(newDataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
returntrue;
}
catch(Exceptione){
System.err.println("增添邮件附件:"+filename+"产生毛病!"+e);
returnfalse;
}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleansetFrom(Stringfrom){
System.out.println("设置发信人!");
try{
mimeMsg.setFrom(newInternetAddress(from));//设置发信人
returntrue;
}
catch(Exceptione)
{returnfalse;}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleansetTo(Stringto){
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleansetCopyTo(Stringcopyto)
{
if(copyto==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleansendout()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
SessionmailSession=Session.getInstance(props,null);
Transporttransport=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();
returntrue;
}
catch(Exceptione)
{
System.err.println("邮件发送失利!"+e);
returnfalse;
}
}
/**
*Justdoitasthis
*/
publicstaticvoidmain(String[]args){
Stringmailbody="<metahttp-equiv=Content-Typecontent=text/html;charset=gb2312>"+
"<divalign=center><ahref=http://www.csdn.net>csdn</a></div>";
sendMailthemail=newsendMail("smtp.msn.com");
themail.setNeedAuth(true);
if(themail.setSubject("题目")==false)return;
if(themail.setBody(mailbody)==false)return;
if(themail.setTo("gates@msn.com")==false)return;
if(themail.setFrom("bill@msn.com")==false)return;
if(themail.addFileAffix("c:oot.ini")==false)return;
themail.setNamePass("user","password");
if(themail.sendout()==false)return;
}
}
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。 |
|