|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。程序
JavaMailAPI是一个用于浏览、编写和发送电子动静的可选包(尺度扩大),能够用来创建基于尺度的电子邮件客户机,它设置了各类因特网邮件协,包含SMTP、POP、IMAP和MIME,还包含相干的NNTP、S/MIME及别的协定。一般开辟JavaMail程序还必要有Sun的JavaBeansActivationFramework(JAF)。JavaBeansActivationFramework的运转很庞大,这里复杂的说就是JavaMail的运转必需得依附于它的撑持,好比JavaMail使用JavaBeansActivationFramework来处置MIME编码的邮件附件。JavaMail接口包括在javax.mail及其子包中,JavaBeansActivationFramework接口包括在javax.activation包中,JAF标准是"Glasgow"JavaBeans标准的一部分,关于JAF的更多细节,请参考JAF指南:
http://java.sun.com/beans/glasgow/jaf.html
中心JavaMailAPI由七个类构成:Session、Message、Address、Authenticator、Transport、Store及Folder,它们都来自javax.mail、即JavaMailAPI顶级包。能够用这些类完成大批罕见的电子邮件义务,包含发送动静、检索动静、删除动静、认证、复兴动静、转发动静、办理附件、处置基于HTML文件格局的动静和搜刮或过滤邮件列表。有关JavaMail的更多信息,请参考JavaMail指南:
http://java.sun.com/products/javamail/
相似的用javamail完成的sendmail程序,网上有良多。但笔者发明多数有一点成绩。我的code鄙人面。调式前请断定您的机子已安装好JDK1.4javamial1.3.2和JAF。假如没有安装请按以下步骤安装:
1从www.java.sun.com网站上猎取最新的JDK。然后设置java情况变量。
假如是Win95/98,在autoexec.bat的最初面增加以下3行语句:
JAVA_HOME=c:j2sdk1.4.2
PATH=%JAVA_HOME%in;%PATH%
CLASSPATH=.;%JAVA_HOME%lib
看好了CLASSPATH中第一个“.”,这个代表以后目次,良多人HelloWorld没有运转起来年夜多是这个缘故原由。
假如是Win2000大概XP,利用鼠标右击“我的电脑”->属性->初级->情况变量
体系变量->新建->变量名:JAVA_HOME变量值:c:j2sdk1.4.2
体系变量->编纂->变量名:Path在变量值的最后面加上:%JAVA_HOME%in;
体系变量->新建->变量名:CLASSPATH变量值:.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;
CLASSPATH后面的谁人"."和下面的意义是一样的。
请调式一个helloworld来考证安装是不是乐成?
2http://java.sun.com/products/javamail/下载最新的javamail。
setCLASSPATH=%CLASSPATH%;c:downloadjavamail-1.3.2mail.jar;.
3http://java.sun.com/products/javabeans/glasgow/jaf.html下载JAF。
setCLASSPATH=%CLASSPATH%;c:downloadactivationactivation.jar
4ok。终究能够先喘口吻了。接上去入手下手程序部分。把if(themail.setTo("########")==false)return;中的#####号改成你本人的邮箱。再把if(themail.addFileAffix("#######")==false)return;中#####写为当地的一个文件路径。也可空着。为了更多的人进修,请人人不要修正sendMail@163.com暗码:sendcode本邮箱只在程序测试中利用!!
然后,在DOS中
javacsendMail.java
javasendMail
呵呵乐成!!!我的主机DOS显现
D:>javasendMail
设置体系属性:mail.smtp.host=smtp.163.com
筹办猎取邮件会话对象!
筹办创立MIME邮件对象!
设置smtp身份认证:mail.smtp.auth=true
设置邮件主题!
设置邮件体魄式
设置收信人
设置发信人!
增添邮件附件:D:endMail.java
程序失掉用户名与暗码
正在发送邮件....
发送邮件乐成!
*************************************************************************
/**
*@authorkangkang
*http://corncc.ikdiy.com
*2005.4.14
*/
importjava.util.*;
importjavax.mail.*;
importjavax.mail.internet.*;
importjava.util.Date;
importjavax.activation.*;
importjava.io.*;
publicclasssendMail
{
//21-30行把本程序所用变量举行界说。详细在main中对它们赋植。
privateMimeMessagemimeMsg;//MIME邮件对象
privateSessionsession;//邮件会话对象
privatePropertiesprops;//体系属性
privatebooleanneedAuth=false;//smtp是不是必要认证
privateStringusername="";//smtp认证用户名和暗码
privateStringpassword="";
privateMultipartmp;//Multipart对象,邮件内容,题目,附件等外容均增加到个中后再天生//MimeMessage对象
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();//mp一个multipart对象
//Multipartisacontainerthatholdsmultiplebodyparts.
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)
{
System.out.println("程序失掉用户名与暗码");
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
{
System.out.println("设置邮件体魄式");
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)
{
System.out.println("设置收信人");
if(to==null)returnfalse;
try
{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}
/**
*@paramnameString
*@parampassString
*/
publicbooleansetCopyTo(Stringcopyto)
{
System.out.println("发送附件到");
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="hello.Thisisatesting.";
sendMailthemail=newsendMail("smtp.163.com");
themail.setNeedAuth(true);
if(themail.setSubject("dkjjf")==false)return;
if(themail.setBody(mailbody)==false)return;
if(themail.setTo("########")==false)return;
if(themail.setFrom("senfMail@163.com")==false)return;
if(themail.addFileAffix("#######")==false)return;//附件在当地机子上的相对路径
themail.setNamePass("sendMail","javacode");//用户名与暗码
if(themail.sendout()==false)return;
}
}
*************************************************************************
TIPS:
A程序前部只是一个笼统的界说。在main函数中给出了详细的参数。
B好好使用System.out.println察看程序的实行历程。
C浏览javamailldocsjavadocsindex.html
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。 |
|