Parsing 是否有一段公开的Coldfusion代码可以可靠地转换电子邮件;源代码“;变成纯文本?

Parsing 是否有一段公开的Coldfusion代码可以可靠地转换电子邮件;源代码“;变成纯文本?,parsing,email,coldfusion,formatting,smtp,Parsing,Email,Coldfusion,Formatting,Smtp,我正在修改listserv管理应用程序的基于Coldfusion的接口,以便在页面上显示最近发布的消息的片段。这些消息都存储在listserv邮件服务器上的SQLServer2005数据库中,从理论上讲,查询并显示最近的消息应该很容易。但是,包含电子邮件记录的表的“message”列似乎包含电子邮件的所有“源代码”,与发送到邮件服务器的完全相同。它包含控制代码、电子邮件标题和标记。例如,查询中返回的部分消息数据可能如下所示: This is a multi-part message in MIM

我正在修改listserv管理应用程序的基于Coldfusion的接口,以便在页面上显示最近发布的消息的片段。这些消息都存储在listserv邮件服务器上的SQLServer2005数据库中,从理论上讲,查询并显示最近的消息应该很容易。但是,包含电子邮件记录的表的“message”列似乎包含电子邮件的所有“源代码”,与发送到邮件服务器的完全相同。它包含控制代码、电子邮件标题和标记。例如,查询中返回的部分消息数据可能如下所示:

This is a multi-part message in MIME format.  
------_=_NextPart_001_01CA9A9E.B2224293 Content-Type: text/plain;  
charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable  
All: =20 The correct time for Tuesday's call is 3 pm ET as noted on the agenda 
All:
The correct time for Tuesday's call is 3 pm ET as noted on the agenda
(为了可读性增加了换行符,这实际上是在一行中完成的)

当我在网站上显示消息时,我只希望它看起来像这样:

This is a multi-part message in MIME format.  
------_=_NextPart_001_01CA9A9E.B2224293 Content-Type: text/plain;  
charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable  
All: =20 The correct time for Tuesday's call is 3 pm ET as noted on the agenda 
All:
The correct time for Tuesday's call is 3 pm ET as noted on the agenda
实际上,这里的编码比我给出的例子要复杂得多。一些消息包括base-64编码的附件和类似的东西。如何去掉所有电子邮件代码和标记,只显示邮件文本


我想一定有人写了一些公共代码或自定义标签来实现这一点,但我的谷歌fu迄今为止让我失望。谢谢。

您可以使用JavaMail来完成此操作。如果数据库中有完整的电子邮件,那么应该能够使用JavaMail将其解析为其组件位

不确定您的Java级别是什么样的,但这很可能会返回您需要的所有元素。它在处理复杂消息时有点复杂,需要一些递归

myEmailString是数据库中包含整个原始电子邮件的列

结果是一个具有以下属性的结构:

.toRecipients = array of email addresses
.ccRecipients = array of email addresses
.from = array of email addresses
.subject = string
.sentDate = date object
.receivedDate = date object
.attachments = array of {.mimeType: string, .fileName: string}
.bodyParts = {.html: array of strings, .text: array of strings}
代码(应在CF8+Java1.6下工作):


myStream=createObject(“java”、“java.io.ByteArrayInputStream”).init(myEmailstring.getBytes());
//创建一个JavaMIMessage并将其作为我们的源inputSteam提供给它
//设置一个假邮件会话,以便我们可以从文件中接收电子邮件
local.props=createObject(“java”,“java.util.Properties”).init();
local.props.put(javacast(“string”、“mail.host”)、javacast(“string”、“smtp.somedomain.com”);
local.props.put(javacast(“string”、“mail.transport.protocol”)、javacast(“string”、“smtp”);
local.mailSession=createObject(“java”,“javax.mail.Session”).getDefaultInstance(local.props,javacast(“null”,“null”));
local.message=createObject(“java”,“javax.mail.internet.mimessage”).init(local.mailSession,myStream);
local.recipientObj=createObject(“java”、“javax.mail.Message$RecipientType”);
//设置数据结构以保存邮件对象的所有元素。
local.mailStruct=structNew();
local.mailStruct.subject=“”;
local.mailStruct.from=“”;
local.mailStruct.toRecipients=“”;
local.mailStruct.ccRecipients=“”;
local.mailStruct.receivedDate=“”;
local.mailStruct.sentDate=“”;
local.mailStruct.attachments=arrayNew(1);
local.mailStruct.bodyParts=structNew();
local.mailStruct.bodyParts.html=arrayNew(1);
local.mailStruct.bodyParts.text=arrayNew(1);
//处理所有标题的内容。主要是到:和从:在这一点上。
local.mailStruct.subject=fixNull(local.message.getSubject());
local.mailStruct.from=parseAddress(fixNull(local.message.getFrom());
local.mailStruct.toRecipients=parseAddress(fixNull(local.message.getRecipients(local.recipientObj.TO));
local.mailStruct.ccRecipients=parseAddress(fixNull(local.message.getRecipients(local.recipientObj.CC));
local.mailStruct.receivedDate=fixNull(local.message.getReceivedDate());
local.mailStruct.sentDate=fixNull(local.message.getSentDate());
//处理身体的东西。
parseEmailBody(local.message,local.mailStruct,#getTempDirectory()#);
if(arguments.messagePart.isMimeType(“text/plain”)){
//正文部分
arrayAppend(arguments.mailStruct.bodyParts.text,arguments.messagePart.getContent());
}else if(arguments.messagePart.isMimeType(“text/html”)){
//HTML正文部分
arrayAppend(arguments.mailStruct.bodyParts.html,arguments.messagePart.getContent());
}否则{
//这是一个多部分电子邮件部分。
local.mp=arguments.messagePart.getContent();
for(local.i=0;local.i
@Edward-谢谢你的回复。我感谢你花时间把这些都打印出来。我从未想过使用Java邮件例程。Unfor