Coldfusion CFML和Exchange-CFexchange标记已停止工作

Coldfusion CFML和Exchange-CFexchange标记已停止工作,coldfusion,exchange-server,exchangewebservices,cfml,Coldfusion,Exchange Server,Exchangewebservices,Cfml,我需要一点人手来将我的CFML cfexchange标记转换为EWS API。我正在使用CF 9.0.1,需要将邮件/日历项添加到托管的Exchange服务器 我得到以下错误: Error: Could not log in to the Exchange server. ________________________________________ connection="exchangeConn" server="EXVMBX016-5.exch016.msoutlookonline.n

我需要一点人手来将我的CFML cfexchange标记转换为EWS API。我正在使用CF 9.0.1,需要将邮件/日历项添加到托管的Exchange服务器

我得到以下错误:

Error:
Could not log in to the Exchange server. 
________________________________________
connection="exchangeConn"
server="EXVMBX016-5.exch016.msoutlookonline.net"
username="exch016\j_ttt"
mailboxname="j@ttt.com"
password="[removed]"
Protocol="http"
port="80"
formbasedauthentication="TRUE"
formbasedauthenticationURL="https://owa016.msoutlookonline.net/owa/auth/logon.aspx"

到目前为止,我已经提出了以下代码

<cffunction  name="EWSAddEvent" output="false" returntype="Boolean">
    <!--- EWS added by vjl  2013/10/31 --->
    <!---
        CFExchange in CF server  9  or older will not talk with Exchange 2010 at all, it is promissed to be fixed in CF 10.
        As a solution you can use the EWS API. Read the stuff below. I hope my hint is helpfull to you.
        ---------------------------------------------------------------------- ----------------------
        With Exchange 2007 Microsoft abandoned WebDav as an interface to Exchangeserver.
        The standard Coldfusion Tags relied on WebDav and will not work anymore.
        Since I needed a way to interface with Exchange Server a started looking for possible solutions and this is what i came up with.
        In december 2010 Microsoft released the Exchange Managed Services Library for java.
        You can find it here: http://archive.msdn.microsoft.com/ewsjavaapi/Release/ProjectReleases.a spx?ReleaseId=5691
        In the getting started document it tells you it depends on 4 3rd party libraries which you need to be download separately:
        -    Apache Commons HttpClient 3.1 (commons-httpclient-3.1.jar)
        -    Apache Commons Codec 1.4 (commons-codec-1.4.jar)
        -    Apache Commons Logging 1.1.1 (commons-codec-1.4.jar)
        -    JCIFS 1.3.15 (jcifs-1.3.15.jar)
        With Coldfusion 9.1 (the version I tested with) you only need
        -    JCIFS 1.3.15 (jcifs-1.3.15.jar) which you can download here: http://jcifs.samba.org/src/
        Place the EWS Jar and the JCIFS Jar in your Coldfusion libray folder and after restarting CF server the following code should work.
        If you understand this you will be able to figure out your specific needs from the EWS API documentation.
        --->
    <cfargument name="EmailAddress" type="String" required="True" />
    <cfargument name="EventName" type="String" />
    <cfargument name="EventStartDateTime" type="Date" />
    <cfargument name="EventEndDateTime" type="Date" />
    <cfargument name="EventSubject" type="String" />
    <cfargument name="EventDescription" type="String" />
    <cfargument name="EventLocation" type="String" Required="False" Default="" />
    <!--- <cfargument name="EventSensitivity" type="String" Required="False" Default="Normal" />
        <cfargument name="EventImportance" type="String" Required="False" Default="Normal" /> --->
    <cfargument name="EventReminder" type="String" Required="False" default=0 />
    <!--- <cfargument name="Organizer" type="String" Required="False" Default="" /> --->
    <cfargument name="OptionalAttendees" type="String" Required="False" Default="" />
    <cfargument name="leadID" type="numeric" required="no" default="0" />
    <cfargument name="serviceID" type="numeric" required="no" default="0" />
    <cfargument name="userID" type="numeric" required="no" default="0" />
    <cfargument name="companyID" type="numeric" required="no" default="0" />
    <cfargument name="serviceTypeID" type="numeric" required="no" default="0" />
    <cfmail to="v@g.com" from="info@t.com" subject="Exchange EWSAddEvent debug Arguments" type="html"><cfdump var="#Arguments#"></cfmail>
    <!--- Build Mailbox --->
    <cfset UserName = Left(Arguments.EmailAddress,Find("@",Arguments.EmailAddress)-1) />
    <cfset Arguments.UserName = Application.Exchange.Domain & "\" & lcase(UserName) & Application.Exchange.MailboxPostFix />
    <cfset Arguments.Pword = Trim(FetchExchangePassword(Arguments.EmailAddress)) />         
    <!--- 1. I need an instance of the ExchangeService class --->
    <cfobject type="Java" class="microsoft.exchange.webservices.data.ExchangeService" name="service">
    <cfset service.init()>
    <cfmail to="v@g.c" from="info@t.com" subject="Exchange EWSAddEvent debug service" type="html"><cfdump var="#service#"></cfmail>
    <!--- 2.  I need to set the credentials --->
    <!--- 2a. Create an instance of the WebCredentials class --->
    <cfobject type="Java" class="microsoft.exchange.webservices.data.WebCredentials" name="credentials">
    <!--- 2b. Set the credentials --->
    <cfset credentials.init("#arguments.UserName#","#Arguments.Pword#", "t.com")>
    <!--- 2c. Set the credentials in the service object --->
    <cfset service.setCredentials(credentials) />
    <!--- 3.  In need to set the URL to Exchange (stay away from autodsicovery) --->
    <!--- 3a. Create an instance of the Uri class --->
    <cfobject type="Java" class="java.net.URI" name="uri">
    <!--- 3b. Set the full path --->
    <cfset uri.init("https://mail.t.com/ews/Exchange.asmx")>
    <!--- 3c. Set the url in the service object --->
    <cfset service.setUrl(uri) />
    <!--- These are the steps you need to create valid a service object. --->
    <!--- Now we need to do something with it. --->
    <!--- I create a test message to my own mailbox to see if it works --->
    <cfobject type="Java" action="create" class="microsoft.exchange.webservices.data.EmailMessage" name="message">
    <cfset message = message.init(service) />
    <cfset message.SetSubject("EWSTest")>
    <cfset messageBody = CreateObject("java", "microsoft.exchange.webservices.data.MessageBody")>
    <cfset messageBody.init("My EWS test message")>
    <cfset message.SetBody( messageBody )>
    <cfset message.ToRecipients.Add("v@t.com") >
    <cfmail to="v@g.c" from="info@t.com" subject="Exchange EWSAddEvent debug message" type="html"><cfdump var="#message#"></cfmail>
    <cfoutput>
        #message.SendAndSaveCopy()# 
    </cfoutput>
    <cfreturn True />
</cffunction>

#message.SendAndSaveCopy()#

您是否使用EWS进行了任何操作?或者你在尝试发送邮件时遇到了问题?如果EWS本身不适用于您,您可以尝试以下代码片段(更改URL、用户名和密码)

如果这样做有效,我们可以尝试更复杂的操作

请确保您使用的是正确的ASMX URL、用户名和密码。尝试在浏览器中访问URL。提供用户名和密码。如果您能够看到WSDL,那么就可以了

还要确保您正在Exchange Server中使用基本身份验证

谢谢,
保罗

没什么。绝对没什么。现在是周末;我怀疑大多数与交易所打交道的人这样做是他们工作的一部分,因此很少有人愿意在周五/周六/周日看它。我添加了一些标签,这些标签应该可以提供更多的可视性。此外,似乎有从CF连接到EWS的工作代码-也许可以尝试一下?哦,标题可能会改进,以便更好地描述这个问题。谢谢。但是我发布的代码给出了我发布的错误。我一直在等待服务器主机(LayeredTech)的响应。我无法从web服务器ping exchange服务器。他们似乎无法弄清楚为什么以及是什么改变导致连接失败。我会再打给你的。我完全不知道这篇文章了。我已经开始了一篇关于同一主题的新文章。
<cfscript>
service = createObject("java", "microsoft.exchange.webservices.data.ExchangeService");
service.init();
serviceURI = createObject("java", "java.net.URI");
serviceURI.init("http://10.192.37.30/ews/Exchange.asmx");
service.setUrl( serviceURI );
credentials =  createObject("java", "microsoft.exchange.webservices.data.WebCredentials");
credentials.init("user", "password");
service.setCredentials(credentials);
folderAPI =  createObject("java", "microsoft.exchange.webservices.data.Folder");

folderName =  createObject("java", "microsoft.exchange.webservices.data.WellKnownFolderName");

result = folderAPI.bind(service, folderName.Inbox);
writeOutput(result.getDisplayName());
ExchangeService service = new ExchangeService();
URI url = new URI( "http://10.192.37.30/ews/Exchange.asmx" );
service.setUrl( url );
service.setCredentials( new WebCredentials( "username", "password" ) );
System.out.println( "Created ExchangeService" );
Folder folder = Folder.bind( service, WellKnownFolderName.Inbox );
System.out.println( folder.getDisplayName() );