??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱码一区二区三区,午夜精品在线观看,91精品大全http://www.aygfsteel.com/jade-liu/javazh-cnThu, 19 Jun 2025 21:45:36 GMTThu, 19 Jun 2025 21:45:36 GMT60AXIS生成框架及发?/title><link>http://www.aygfsteel.com/jade-liu/archive/2009/09/03/293766.html</link><dc:creator>jade76</dc:creator><author>jade76</author><pubDate>Thu, 03 Sep 2009 09:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/jade-liu/archive/2009/09/03/293766.html</guid><wfw:comment>http://www.aygfsteel.com/jade-liu/comments/293766.html</wfw:comment><comments>http://www.aygfsteel.com/jade-liu/archive/2009/09/03/293766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jade-liu/comments/commentRss/293766.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jade-liu/services/trackbacks/293766.html</trackback:ping><description><![CDATA[<p>1。生成框?br /> 因ؓ已经有了wsdlQ所以用AXIS来生成整个webservice的框架?br /> 首先下蝲AXISQ我用的是AXIS1.4Q包含所有的JAR和实例,参考文档?br /> 首先在Q意位|徏立文件夹Q把wsdl文g放进去,q在q个目录下面建立一?txt文档Q内容:<br /> set Axis_Lib=D:\axis-1_4\lib<br /> set Java_Cmd=java   -Djava.ext.dirs=%Axis_Lib% <br /> %Java_Cmd%   org.apache.axis.wsdl.WSDL2Java -t -B -v -D -s -p com.aceway.ws.faultGd -c com.aceway.ws.faultGd.FaultImpl faultgd.wsdl</p> <p>讄了变量Axis_LibQ指向AXIS的所有JAR的目录,后面的com.aceway.ws.faultGd是要建立的包的名Uͼ会把所有的生成的文件放q去Q?br /> com.aceway.ws.faultGd.FaultImpl 是服务提供方的实现类Qfaultgd.wsdl是本路径下的wsdl文g名?br /> 把txt后缀改ؓ.batQ在开?-q行 CMD 里运行它。可以生成整个框Ӟ以便COPY到工E下再开发?br /> 2。发?br /> 在随意位|徏?txt文档Q内ҎQ?br /> set Axis_Lib=D:\axis-1_4\lib<br /> set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%<br /> set Axis_Servlet=http://localhost:8080/services/AdminService<br /> %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd</p> <p>保存后改后缀为batQ把工程部v好ƈ启动TOMCATQ把W一步里生成的deploy.wsdd攑֜同目录下Q?br /> 在开?-q行 CMD 里执行,会自动把deploy.wsdd的内容自动加到部|的工程的server-config.wsdd下,再拷贝到工程代码中替换?/p> <p> ?<br /> java -cp C:\axis-1_4\lib\axis.jar;C:\axis-1_4\lib\jaxrpc.jar;C:\axis-1_4\lib\saaj.jar;C:\axis-1_4\lib\commons-logging-1.0.4.jar;C:\axis-1_4\lib\commons-discovery-0.2.jar;C:\axis-1_4\lib\wsdl4j-1.5.1.jar;C:\axis-1_4\lib\activation.jar;C:\axis-1_4\lib\mail-1.4.jar; org.apache.axis.wsdl.WSDL2Java -p com.xxxxxx.vodapp.bosoapservice  -S true  backoffice.wsdl<br /> <br /> set Axis_Lib=C:\axis-1_4\lib<br /> set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%<br /> set Axis_Servlet=http://localhost/vodsys_ccur/services/AdminService<br /> %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd<br /> </p> <img src ="http://www.aygfsteel.com/jade-liu/aggbug/293766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jade-liu/" target="_blank">jade76</a> 2009-09-03 17:20 <a href="http://www.aygfsteel.com/jade-liu/archive/2009/09/03/293766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA邮g发http://www.aygfsteel.com/jade-liu/archive/2008/10/23/236256.htmljade76jade76Thu, 23 Oct 2008 12:29:00 GMThttp://www.aygfsteel.com/jade-liu/archive/2008/10/23/236256.htmlhttp://www.aygfsteel.com/jade-liu/comments/236256.htmlhttp://www.aygfsteel.com/jade-liu/archive/2008/10/23/236256.html#Feedback0http://www.aygfsteel.com/jade-liu/comments/commentRss/236256.htmlhttp://www.aygfsteel.com/jade-liu/services/trackbacks/236256.html

?span>  ?/span>Q邮件群发是消息?span>Internet传递的最好办法,同时也是垃圾邮g的来源。本文以使用JAVAMAILZQ讨论实现大规模邮g发送的Ҏ和技巧?/span>

关键?/span>Q?span>SMTP?span>MIME?span>JAVAMAIL、群发邮?/span>

一、引a

邮g发?span>Internet生活中最常见的一U信息传递方式,其传递信息的d性、高效率和低费用而被众多商家q泛采用。我们的电子邮箱随之充满了各U类型的商业邮gQ一般称q些商业邮g为垃N件。本文笔者运?span>JAVA语言开发了一个基?span>SMTP服务器的邮g发软gQ在以下内容中将逐一介绍SMTP协议Q?span>JAVAMAIL包,以及邮g发E序的片D늭?/font>

二、简单邮件传输协议与JAVAMAILcd

1Q简单邮件传输协议(SMTPQ从1982qv被用来在不同计算机系l间传递电子邮件?span>SMTP使用单的ASCII码文本命令,命o定义长度?span>4个字W?span>SMTP基本命o集及功能如表一所C?/span>

命o

功能

HELO

从客L打开问候信?/font>

MAIL

标识发g?/font>

RCPT

标识收g?/font>

DATA

标识邮g开?/font>

SEND

向终端发送邮?/font>

SOML

执行SEND?span>MAIL命o

SAML

执行SEND?span>MAIL命o

RSET

重置SMTPq接

VRFY

验证pȝ用户?/font>

EXPN

查询列表和别?/font>

HELP

查询命o列表

NOOP

不操?/font>

QUIT

l止SMTPq接

TURN

变换SMTP角色

表一

l大多数SMTPpȝ采用一U标准的邮g报文格式Q即RFC822?#8220;规范”邮g的Ş式?span>RFC822明确的划分邮件ؓ两个部分Q一部分UCؓ邮g_起其作用是标识邮ӞW二部分是邮件体?/font>

邮g头中包括Q?/font>

1Q?span>ReceivedQ用来标识将邮g从最初发送者到目的地进行中间{发的SMTP服务器,其中含有发信人及发信服务器真实的信息?/span>

2Q?span>Return-pathQ用来标识邮件发送到目的服务器所l过的\径?/span>

3Q?span>FromQ显C发信h的地址。格式ؓFromQ?span>user-name?/span>

4Q?span>DateQ记录邮件发送时间?/span>

5Q?span>DestinationQ记录收邮g地址, 标识电子邮g的接受方地址Q这些地址是纯_地信息Q?span>SMTP仅通过RCPT命o发送信件。包?span>ToL件hQ?span>Cc抄送收件hQ?span>Bcc暗抄送收件hQ格式ؓTo/Cc/BccQ?span>address?/span>

6Q?span>ResentQ表CZ邮件处于某中原因需要从客户端再ơ发送?/span>

2Q?span>JAVAMAIL关于邮g操作最新包?span>JavaMail1.2Q有四个大类Q如表二所C?/span>

javax.mail

邮gpȝ模型c?/font>

javax.mail.event

Javamail API监听和事件处理类

javax.mail.internet

Internet邮gpȝc?/span>

javax.mail.search

JavaMail API邮g搜烦c?/span>

表二

q些cL作分别属?/span>mailapi.jarQ文件包含核心AQ;c)Q?span>smtp.jarQ实?span>SMTP协议功能Q,pop3.jarQ实?span>POP3协议功能Q,imap.jarQ包?span>IMAP协议功能Q等四个文g。同时这四个文g都被包含?span>mail.jar中,如过囄事的话,直接包含mail.jar卛_?/span>

如果要实现带附g的邮件收发功能,q需要包?span>activation.jarQ它提供通过二进制数据流的Ş式处?span>MIMEcd的访问?/font>

三、程序D?/font>

1Q首先是q接SMTP服务器,JAVAMAIL1.2不能实现SMTP服务的功能,但可以连接已有的SMTP服务器?/span>

//创徏一个属性对?/span>

      Properties props=System.getProperties();  //创徏pȝ属性对?/span>

       props.setProperty("mail.transport.protocol","smtp");    //讄使用smtp协议

       props.setProperty("mail.smtp.host",server);  //SMTP服务器地址

       props.setProperty("mail.smtp.port",""+port); //SMTP端口?span>

       props.setProperty("mail.smtp.auth","true");   //SMTP服务用户认证

       //创徏一个过E对?/span>

javax.mail.Session sess = javax.mail.Session.getDefaultInstance(props, null);

2Q创Z新邮gQ一般定义该MimeMessage创徏一个邮件对象?/span>

MimeMessage msg=new MimeMessage(sess);       //创徏邮g对象

msg.setSubject(“邮g发”)Q?span>               //讄邮g主题

msg.setSentDate(new Date());                 //讄发信日期

msg.setFrom(Address address)Q?span>               //讄发信?/span>

邮g地址只要W合带有“@”W号q且使用“.”分成三段的字W串都会?span>SMTP服务器接受,发送广告邮件的商家一般都会在q里修改发信人地址Q所以我们的收g׃看见的广告邮件显CZ发信人内容一些的Ҏ不存在邮件地址。如果想查看真正地发信hQ应该查看邮件头?span>Received的内宏V?/font>

//讄L件h

msg.setRecipients(Message.RecipientType.TO,Address toaddress);

//讄抄送收件h

msg.addRecipients(Message.RecipientType.CC,Address coaddress);

//讄暗抄送h

msg.addRecipients(Message.RecipientType.BCC,Address bcoaddress);

SMTP允许一邮件有多个接受者,我们可以利用q个特点Q在q三个收件h中填写多个收件h地址来提高大规模发邮件效率。另?span>Bccq个字段可以隐藏收g人的地址Q你有时可能发现邮g的收件h不是自己却收Cq封邮gQ就是利用了暗抄q个属性?/span>

3Q邮件体一般分为邮件正文本部分和附仉分。正文部分需要设|文本的格式Q包?span>text文本cdQ?span>messafe报文cdQ?span>image图象cd,video视频cd,audio声音cd,application应用E序cd,multipart混合cd{。如下例Q?span>

     String m_body;                          //为需要添加文本内?/span>

    MimeMultipart content=new MimeMultipart();   //创徏邮g体对?/span>

    if(content==null) return false;

    MimeBodyPart part=new MimeBodyPart();        //创徏文本部分对象

    String type="text/plain";                    //文本cd默认?span>text/plain

    if(m_body.startsWith("<html>") || m_body.startsWith("<HTML>"))

       type="text/html";             //如果是网Ş式的内容Q则改变cd?span>text/html

    part.setText(m_body);

    part.setHeader("Content-Type",type);

    content.addBodyPart(part);

    msg.setContent(content);                     //d文本至邮件中

msg.saveChanges();                      //保存修改

4Q如何向的邮件中d附gQ利用多用途互联网邮g扩展Q?span>MIMEQ协议可以直接二q制数据d到标准的RFC822邮g中。在JAVAMAIL中实现方法如下,

    String filename;                 //用于存储文g名称与存放\?/span>

    if(filename!=null || filename.length()>0){

       MimeBodyPart part=new MimeBodyPart();//创徏MIME对象

       DataSource fds = new FileDataSource(filename); //创徏文g对?/span>

       part.setDataHandler(new DataHandler(fds));

   part.setFileName(MimeUtility.encodeText(fds.getName()));

       content.addBodyPart(part);        //d二进制编码至邮g体中

       }

   msg.setContent(content);                  //d文本至邮件中

msg.saveChanges();                        //保存修改

5Q邮件的基本内容讄完毕Q发?span>SMTP电子邮g?/span>

   Transport trans=sess.getTransport();      //创徏发送对?/span>

   trans.send (msg);                         //发?/span>

    6.如何发邮gQ首先我们要有一个邮件地址列表Q邮件地址列表可以向从公共|站获得Q也可以Ҏ某单位名U按字典法生成,或者购买用戯。邮件地址列表应该按行存放每个邮g地址?/span>

发信的速度?span>SMTP的响应速度有密切的关系Q所以因该充分利用一邮件可以有多个接受地址的条Ӟ邮件地址按组dq行发送,才能提高邮g发地效率。下面的例子是每一信发给10个邮件地址?/font>

import java.io.*;

import java.net.*;

import java.util.*;

import javax.mail.*;

import javax.activation.*;

import javax.mail.internet.*;

class massmail(){

try{

    FileReader fis = new FileReader(“邮g列表文g”);

    BufferedReader dis = new BufferedReader(fis);

    int i=0;

while((fileline = dis.readLine())!=null){

  if((i%10)==0)

    MimeMessage msg=new MimeMessage(sess);

……

  if((i%10)!=0){                //多个邮g地址之间要加“Q?#8221;

         maillist = maillist + “,” + fileline;

       }else{

         maillist = fileline;

       }

       i++;

      if((i%10)==0){     //一邮件在暗抄地址处加10个收件h

msg.addRecipients(Message.RecipientType.BCC, maillist);

    ……                        //讄邮g内容

    Transport trans=sess.getTransport();    //创徏发送对?/span>

  trans.send (msg);        //发?/span>

}

}

fis.close();

}catch(Exception error){

System.out.println("Exception:" + error);

}



jade76 2008-10-23 20:29 发表评论
]]>
վ֩ģ壺 ƽ| ˷| ˮ| | пѷ| ˱| ɳ| ͤ| | ϴ| ̨| ޳| | | | | ֶ| | ɽ| ˳| | | ˫| â| | Ԫ| | | Ҷ| | Ȫ| | ³| ̫ԭ| | ϴ| | | | | ɣ|