|
JavaMail快速入门-8
发表日期:2007-12-23
|
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不是一件困难的事情。 (出处:)
|
|
上一篇:Javamail中附件中文名字乱码祥解
人气:1181
下一篇:Java数据对象(JDO)介绍(二)
人气:552 |
浏览全部J2EE/J2ME的内容
Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐
|
|