JavaMail快速入门__教程 |
|
日期:2007-5-20 0:38:42 人气:317 [大 中 小] |
|
|
|
// -- 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不是一件困难的事情。 |
|
出处:本站原创 作者:佚名 |
|
|