站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题JavaMail快速入门-8

JavaMail快速入门-8

摘要: JavaMail快速入门-8
内容: SimpleReceiver测试
  让我们对SimpleReceiver做一次测试。为了让它有东西可以接收,我发送图4所示的消息(注意:消息由文本和一个附件组成)
    图4 用于SimpleReceiver的测试消息
  一旦接收到消息,就把该消息认为是一个多部分消息。打印的文本如下:
FROM: Tony Loton
SUBJECT: Number 1
[ Multipart Message ]
CONTENT:text/plain;
charset="iso-8859-1"
Attachment 1
from Tony Loton.
-----------------------------
  把你的消息送出去
  为了有趣一点,并且说明JavaMail APIs的一个新颖的用法,我现在简要介绍一下我的谈话email项目。在做这个试验之前你需要得到lotontalk.jar文件,并把它加到你的classpath中去,添加方法如下:
  set CLASSPATH=%CLASSPATH%;lotontalk.jar
  你也需要在SimpleReceiver类中两个地方做代码修改。首先在receive()方法里面,把以下代码:
// -- Get the message wrappers and process them --
Message[] msgs = folder.getMessages();
for (int msgNum = 0; msgNum < msgs.length; msgNum++)
{
  printMessage(msgs[msgNum]);

}

  替换为:

// -- Get the message wrappers and process them --

Message[] msgs = folder.getMessages();

for (int msgNum = 0; msgNum < msgs.length; msgNum++)

{

 printMessage(msgs[msgNum]);

 speakMessage(msgs[msgNum]);

}

  现在增加以下的新方法speakMessage(),它与最初的printMessage()方法相似。

/**

* "speakMessage", a talking version of printMessage().

*/

public static void speakMessage(Message message)

{

 String speech="";

 try

 {

  com.lotontech.talk.LOTONtalk speaker=new com.lotontech.talk.LOTONtalk();

  String from=((InternetAddress)message.getFrom()[0]).getPersonal();

  if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress();

   speech=speech+"from "+from+", ";

   String subject=message.getSubject();

   speech=speech+"subject "+subject+", ";

   // -- Get the message part (i.e., the message itself) --

   Part messagePart=message;

   Object content=messagePart.getContent();

   // -- ...or its first body part if it is a multipart message --

   if (content instanceof Multipart)

    messagePart=((Multipart)content).getBodyPart(0);

    String contentType=messagePart.getContentType();

    if (contentType.startsWith("text/plain")|| contentType.startsWith("text/html"))

    {

     InputStream is = messagePart.getInputStream();

     BufferedReader reader=new BufferedReader(new InputStreamReader(is));

     String thisLine=reader.readLine();

     while (thisLine!=null)

     {

      speech=speech+thisLine+". ";

      thisLine=reader.readLine();

     }

    // -- SPEAK --

    speaker.speak(speech,true);

   }

  }

  catch (Exception ex)

  {

   ex.printStackTrace();

  }

 }

  因为在说话之前,你正在把整个消息积累到一个字符串中,所以这个方案可能只适合小的消息。作为一种选择,你可以读一行然后再讲一行。

  当然,我不可能把结果显示给你看,因此你必须亲自来做实验。

  你还可以做一些小的试验,当然不是在这个试验中,来发现语音合成的一些有趣的特征:怎样处理数字,以及怎样把全部大些的单词假想成只取首字母的缩写词,然后一个一个字母地把它们拼出来。

  结论

  我们已经通过对发送和接收email消息的应用程序的各个基本构造块分别讲解,涉及到了收发email的方方面面。如果你是第一次接触JavaMail,是不是发现在应用程序中收发email不是一件困难的事情。
Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd, scwcd SimpleR
↑返回目录
前一篇: 什么是 Enterprise JavaBeans 组件?(一)
后一篇: JavaMail快速入门-5