Adobe ColdFusion 8

cfexchangemail

描述

取得Microsoft Exchange服务器上邮件的信息和附加参数、删除信息,和性能的信息。

语法

delete
<cfexchangemail
    required
    action = "delete"
    uid = "message UID,message UID,..."
    optional
    connection = "connection ID"
    folder = "Exchange folder path">

deleteAttachments
<cfexchangemail
    required
    action = "deleteAttachments"
    uid = "message UID"
    optional
    connection = "connection ID">
    folder = "Exchange folder path">

get
<cfexchangemail
    required
    action = "get"
    name = "query identifier"
    optional
    connection = "connection ID"
    folder = "Exchange folder path">

    <cfexchangefilter name = "filter type" value = "filter value">
    <cfexchangefilter name = "filter type" value = "filter value">
    ...
</cfexchangemail>

getAttachments
<cfexchangemail
    required
    action = "getAttachments"
    name = "query identifier"
    uid = "message UID"
    optional
    attachmentPath = "directory path"
    connection = "connection ID"
    folder = "Exchange folder path"
    generateUniqueFilenames = "no|yes">

getMeetingInfo 
<cfexchangemail
    required
    action = "getMeetingInfo"
    meetingUID = "meeting UID"
    name = "query identifier"
    optional
    connection = "connection ID"
    mailUID = "message UID">

move 
<cfexchangemail
    required
    action = "move"
    destinationFolder = "Exchange folder path"
    optional
    connection = "connection ID"
    folder = "Exchange folder path">

    <cfexchangefilter name = "filter type" value = "filter value">
    <cfexchangefilter name = "filter type" value = "filter value">
    ...
</cfexchangemail>

set 
<cfexchangemail
    required
    action = "set"
    message = "#structure with values to set#">
    uid = "message UID">
    optional
    connection = "connection ID"
    folder = "Exchange folder path">

注: 如果你忽略了这个连接属性,你就必须在cfexchangemail标签里指定cfexchangeconnection标签属性来创建一个临时的连接。这种情况下,ColdFusion会在该标签结束运行时关闭连接。更多细节,请看cfexchangeconnection标签的打开动作。

注: 你可以在attributeCollection 中指定这个标签的属性,作为一个结构的value,在attributeCollection 中指定结构的名称,并使用这个标签的属性名称作为这个结构的Keys.

属性

注: 如果一个属性,比如说folder或是destinationFolder得到一个文件夹的路径,文件夹的名字里包含一个斜线 (/),通过使用the _xF8FF_ escape character指定了文件夹的名字,以此来避免exchange fromcharacter解毒为一个路径定界符。

属性

动作

必选/可选

默认

描述

action

所有

必选

 

取得的动作。必须是以下的值之一:

  • delete
  • deleteAttachments
  • get
  • getAttachments
  • getMeetingInfo
  • move
  • set

attachmentPath

getAttachments

可选

 

放置附加参数的目录的文件路径。如果该目录不存在,ColdFusion 就会创建一个。

注意: 如果你忽略了这个属性,ColdFusion不会保存任何附加参数。如果你指定的是一个相对路径,路径的根在 ColdFusion的临时目录里,它是用GetTempDirectory 函数返回的。

connection

所有

可选

 

Exchange 服务器上连接的名字, 它在cfexchangeconnection 标签里指定。

如果你忽略这个属性,你既必须在cfexchangecalendar标签里指定cfexchangeconnection标签的打开动作来创建一个临时连接。

destinationFolder

move

必选

 

斜线(/) 划定的路径, 相对收件箱的根目录,移动邮件到文件夹

folder

all except getMeetingInfo

可选

 

斜线(/) 划定的路径, 相对收件箱的根目录,包含了邮件的文件夹。cfexchangemail 标签只能在指定的文件夹里看到,不用寻找子文件夹.

关于取得和移动的动作指定一个带有一个name="folder"属性的cffexchangefilter子标签,与设置这个属性是同样的作用,取的属性值要略高.

如果你忽略了这个属性,或者关于取得和移动的动作,你没有使用相应的cfexchangefilter设置,Exchange就会在收件箱的顶层。

generateUniqueFilenames

getAttachments

可选

no

如果多个附加参数都有同样的文件名,该Boolean值指定是否生成独特的文件名.如果两个或者更多的附加参数有同样 的文件名,而且这个选项是 yes, ColdFusion 就会附录一个数字给冲突的文件名.这样的话,如果有三个附加参数有同样的文件名 myfile.txt, ColdFusion就会把它们保存为 myfile.txt, myfile1.txt和 myfile2.txt.

mailUID

getMeetingInfo

可选

 

邮件信息,区分大小写,包含会议请求信息,回应,或者取消通知.如果存在多个关于当个会议的信息,可以使用这个属性.

meetingUID

getMeetingInfo

必选

 

当你受到通知的时候,区分大小写的会议的UID

message

set

必选

 

j结构的一个参考,该结构包含了要被设置的功能和他们的值。你必须在井字号(#)中指定这个属性。

更多信息结构的细节,请看使用方法.

name

get

getAttachments

getMeetingInfo

必选

 

ColdFusion query 变量的名字,该变量包含了返回的 邮件信息或者是关于附加参数或会议的检索信息 。更多返回数据的信息,请看使用方法。

uid

delete

getAttachments

set

必选

 

运行该动作的信息的UID,区分大小写。

对于删除的动作,该属性可以是一个用逗号隔开的UID值的清单。 deleteAttachments, getAttachments, 和设置动作都只允许一个单独的UID 值。

使用方法

cfexchangemail 标签在一个Exchange服务器上运行邮件动作,这样的运作你是不能通过使用 cfmail 标签办到的。 (你必须用cfmail 标签来发送,转发和回复邮件信息.) 使用cfexchangemail 标签来运行一下动作:

使用这个标签的时候,你必须有一个和 Exchange 服务器的连接。如果你在使用多个与exchange服务器冲突的标签,比如说,你在创建一些关联记录,你就应该使用cfexchangeconnection标签来创建一个永久连接。然后你在每一个cfexchangemail标签里指定该连接的标识符,或者任何其他的ColdFusion Exchange 标签里创建,如果你也要进入任务, 关联, 或者连接的话。这样做,避免了为每一个标签打开和关闭连接的负荷 。

相对来说,你可以创建一个临时的连接,该连接只持续在 ColdFusion 运行单个cfexchangemail 标签的时候。如果要这样做,你可以在cfexchangemail标签里指定连接的属性。连接属性的更多细节,请看cfexchangeconnection 标签。

删除

删除动作永久地从服务器上删除了一个信息,相当于Outlook的永久删除动作。使用 move动作移动一个信息给 Deleted Items 文件夹,就相当于 Outlook 的删除动作。

当你指定了删除动作的时候,你必须指定一个uid属性,该属性带有用逗号隔开的一个或多个Exchange UIDs的清单,而Exchange UID确定了你想删除的任务。你可以用一个适当的过滤器表达式来使用取得动作,并定义UID的值去指定。

如果所有的你指定的UID都是无效的, cfexchangemail 标签就会产生一个错误。如果至少有一个 UID 是有效的,这个标签就会忽略所有无效的 UIDs,删除被有效UID指定的 items 。

取得

当你指定了取得动作之后,你可以使用子 cfexchangefilter 标签来指定要取得的信息。更多细节,请看cfexchangefilter。当这个标签结束进程之后,query 对象就会被命名属性指定,该命名属性包含了每一个找到的匹配信息的一个记录。每一个记录都有以下的栏目:

栏目

描述

BCC

一个用逗号隔开的Exchange user ID或者 web e-mail 。

CC

一个用逗号隔开的Exchange user ID或者 web e-mail地址 。

Folder

从Exchange 邮箱的根目录到带有信息的邮箱的用斜线划定的路径。

FromID

一个Exchange user ID或者 web e-mail地址

HasAttachment

一个Boolean值,该Boolean值显示了信息是否拥有至少一个附加参数。

HTMLMessage

一个字符串,包含了一个HTML格式版本的信息。

IsRead

一个 Boolean 值.

Message

一个字符串,带有纯文字版本的信息。

MessageType

以下的字符串之一:

  • Mail
  • Meeting_Cancel
  • Meeting_Request
  • Meeting_Response

MeetingRespons

如果信息的类型是Meeting_response, 这个栏目就会包含以下类型的字符串作为回复的代码: Accept, Decline, 或 Tentative。这个域不用作其他的信息类型。

MeetingUID

如果这个信息的类型是Meeting_Cancel, Meeting_requestMeeting_response,这个栏目就包含了信息被发送的日历事件的UID。在cfexchangecalendar标签里使用该值来回应一个请求。该域不试用于邮件信息类型

Sensitivity

以下的字符串之一:

  • public
  • private
  • normal
  • company-confidential

Subject

一个字符串

TimeReceived

一个Coldfusion日期-时间对象。

TimeSent

一个Coldfusion日期-时间对象。

ToId

一个用逗号隔开的Exchange user ID或web mail ID的清单。

UID

信息的 Exchange UID

注:邀请寄信人只有当寄信人在参会者清单上的时候才可以得到一个会议请求信息。

getAttachments

当你使用 getAttachments 动作的时候,你必须指定一个单独的 UID 和一个命名属性。 cfexchangecontact 标签公布了一个query对象,该对象用用带有每一个附加参数的记录的命名属性来指定UID

栏目名

描述

attachmentFileName

附加参数的文件名。

attachmentFilePath

服务器上附加参数的绝对路径。如果你或略了这个attachmentPath 属性, 这个栏目就会包含一个空的字符串。

CID

附加参数的content-ID。使用在HTML img标签里,在一个信息里插入图像。

mimeType

附加参数的MIME类型,比如text/html

isMessage

指定了是否附加参数是一个信息的一个Boolean值。

size

附加参数的字节大小。

如果你忽略了attachmentPath 属性, ColdFusion不会取到任何的附加参数。它会取到有关附加参数的一些信息。这让你可以定义事件的附加参数而不用导致取得附加参数文件的负荷 。

如果一个信息有相同名字的多个附加参数,附加参数信息的结构总是列出附加参数的riginal, duplicate, names, 就算你指定了generateUniqueFilenames="yes".。该 generateUniqueFilenames 属性只影响在disk上的文件。

getMeetingInfo

你可以使用 getMeetingInfo动作来取得指定会议的信息,比如说会议开始和结束的时间,等等,关于你受到通知信息的会议,比如 说一个邀请信息或者取消信息。这些信息不是直接展示在get动作返回通知信息的query对象。

注: 在公布的时候,下面的信息不会完全反映在getMeetingInfo的行为中。更多最新的信息,请看Adobe官方网站ColdFusion 8 LiveDocs的cfexchangemail

当你指定了getMeetingInfo 动作之后,你可以用会议的UID指定一个meetingUID 属性。你从get动作返回的query记录中取得 UID 值。你可以用包含了通知的指定信息里的UID选择性地指定一个messageUID 属性;如果你收到了多个关于一个会议的信息,你就可以使用这个属性来选择一个单个的通知信息。

当这个标签运行完毕,这个用命名属性指定的query对象就包含了 每一个找到的匹配信息记录。每一个记录都包含以下栏目:

Field

描述

AllDayEvent

一个Boolean值,指明这是不是一个全天事件。

Duration

分钟范围的时间区间。

EndTime

事件结束的时间,是 ColdFusion ODBC日期-时间模式。

From

发送会议通知的人的 mail ID

HasAttachment

一个Boolean值,指明了该事件是不是有附加参数。

Importance

以下的值之一:

  • high
  • normal
  • low

IsRecurring

一个Boolean值,指明了该事件是否重复。

Location

一个字符串,指定了事件的发生地。

MeetingUID

在日历里的事件的UID

Message

一个字符串,包含了关于事件的信息。

OptionalAttendees

一个用逗号隔开的 mail ID的清单。

Organizer

.一个字符串,字符串的值不必要是一个 Exchange ID 或者 e-mail 地址。

Reminder

在事件发生之前几分钟的一个时间点,用来显示一个提醒信息。

RequiredAttendees

一个用逗号隔开的mail ID的清单。

Resources

一个用逗号隔开的 Exchange scheduling资源上的 mail ID,比如会议的房间或者会议展示的设备。

Sensitivity

以下的值之一:

  • normal
  • company-confidential
  • personal
  • private

StartTime

T事件开始的时间,是ODBC日期-时间格式的。

Subject

一个字符串,描述了事件的主题。

TimeReceived

信息收到的时间,是ODBC日期-时间格式的。

UID

包含了事件通知的UID信息。

move

使用这个移动动作可以把一个或者一个以上的邮件从一个文件夹移动到别的文件夹去。你可以使用这个动作把邮件移动到回收站, 相当于Outlook的删除按键动作。

当你指定了移动动作,指定了目的地文件夹,也选择了包含信息的将要被移动文件的文件夹。 (默认的来源文件夹是收件箱). 你可以使用子 cfexchangefilter 标签来指定邮件去取得。更多细节,请看cfexchangefilter

set

当你指定了set动作,用信息属性指定的结构会包含 key-value pairs , key-value pairs指定了信息功能去作set的动作。下面的表格罗列了key names 和他们的有效值:

Key name

有效值

IsRead

yes, no

Importance

high, normal, low

Sensitivity

normal, company-confidential, personal, private

范例

下面的范例里, 取得了上周从docuser2收件箱里取得的所有的邮件附件。它把每一个邮件的附件都放置在一个命名独特的目录里。它不可以使用 UID 作为一个文件名。因为,对于i每一个带有附件的邮件, UID可以包含UID、直接路径, 主题, 日期、发送人的应用报告,还带有一个罗列了信息附加信息的一个表格。这个表格包含了附加信息的名字、大小和 MIME 类型。.

<!--- Index for message attachement directory --->
<cfset i=1>
<!--- Dates for date range --->
<cfset rightNow = Now()>
<cfset lastWeek = DateAdd("d","-7", rightNow)>

<cfexchangeconnection
    action="open"
    username ="#user1#"
    password="#password1#"
    server="#exchangeServerIP#"
    connection="testconn1">

<cfexchangemail action="get" folder="Inbox " name="weeksMail" connection="testconn1">
    <cfexchangefilter name="FromID" value="docuser2">
    <cfexchangefilter name="TimeSent" from="#lastWeek#" to="#rightNow#">
</cfexchangemail>

<cfloop query="weeksMail">
    <cfif weeksmail.HasAttachment>
        <cfexchangemail action="getAttachments" 
            connection="testconn1"
            folder="Inbox/MailTest"
            uid="#weeksmail.uid#" 
            name="attachData" 
            attachmentPath="C:\temp\cf_files\attachments\msg_#i#"
            generateUniqueFilenames="yes">
        <cfoutput>
            Message ID #weeksmail.uid# attachments are in the directory
                C:\temp\cf_files\attachments\Msg_#i#<br />
            <br />
                Message information:<br />
                Subject: #weeksmail.Subject#<br />
                Sent: #dateFormat(weeksmail.TimeSent)#<br />
                From:  #weeksmail.FromID#<br />
            <br />
            Attachments<br />
            <cftable query="attachData" colheaders="yes">
                <cfcol header="File Name" text="#attachmentFilename#">
                <cfcol header="Size" text="#size#">
                <cfcol header="MIME type" text="#mimeType#">
            </cftable>
        </cfoutput>
        <cfset i++>
    </cfif>
</cfloop>
<cfexchangeconnection action="close" connection="testconn1">