1

WebDAVと.Net2.0を使用して、ExchangeServer2003を実行しているサーバー上の電子メールアカウントに関する情報を収集しています。次のようなURIにアクセスできます。

http://my.mailserver.com/exchange/user/Inbox/someImportantEmail.EML

私は次のようにファイルをコピーしようとしました:

Dim uri As New Uri(uriNode.InnerText)
If uri.IsFile() Then
    Dim fn As String = Path.GetFileName(uri.LocalPath)
    System.IO.File.Copy(uri.LocalPath, "c:\" & fn)
End If

ただし、uri.IsFile()は常にfalseを返します。私が注意したもう1つのことは、uri.Localパスは

/exchange/user/Inbox/someImportantEmail.EML

私は私の問題のこの部分ですか?.emlファイルをExchangeサーバーからローカルハードドライブにコピーするにはどうすればよいですか?

編集:
私はAnthonyWJonesの提案を実装しました

    Dim cred As New System.Net.CredentialCache
    cred.Add(uri, "BASIC", New System.Net.NetworkCredential(_username, _password, _domain))
    Dim wc As New WebClient()
    wc.Credentials = cred
    wc.DownloadFile(uri, "c:\testEML.EML")

これにより、cドライブにtestEML.EMLファイルが作成されますが、EMLファイルの内容は次のとおりです。

<!-Copyright(c)2000-2003MicrosoftCorporation。無断複写・転載を禁じます。-->
<!-CURRENT FILE =="NON-IE5""NON-WIN32"フレームセット->
<!-CURRENT TEMPLATE == frameset.00000000->
<HTML>
<HEAD>
<META HTTP-EQUIV = "Content-Type" CONTENT = "text / html; CHARSET = utf-8">
<TITLE> Microsoft Outlook Web Access </ TITLE>
<BASE href = "http://my.mailserver.com/exchange/user/">
</ HEAD>
<SCRIPT language = "JavaScript">
var g_iNewWindowWidth = 700;
var g_iNewWindowHeight = 500;
var g_fWarnOnLogOff = false;
関数WarnOnLogOff()
{{
if(g_fWarnOnLogOff)
alert( "メールボックスを不正アクセスから保護するには、Outlook Web Accessの使用が終了したら、すべてのブラウザウィンドウを閉じてください。");
}
</ SCRIPT>
<FRAMESET OnUnload = "WarnOnLogOff()" framepacing = "3" cols = "190、*"> <FRAME bordercolor = "#3D5FA3" name = "navbar" title = "Navigation" src = "Inbox /?Cmd = navbar" marginheight = "0" marginwidth = "0" scrolling = "auto" border = "1"> <FRAME name = "viewer" title = "Contents" src = "Inbox / FW:.EML?Cmd = open" scrolling = "自動">
<NOFRAMES>
<BODY> <P>このページはフレームを使用していますが、ブラウザはフレームをサポートしていません。</ P> </ BODY>
</NOFRAMES>
</ FRAMESET>
</ HTML>

不正アクセスとは何ですか?

4

2 に答える 2

1

試す:-

 Dim webClient As New WebClient()
 webClient.UseDefaultCredentials = True
 webClient.DownloadFile(uri, fn)

標準ファイルIOを使用してhttpリソースをコピーすることはできません

于 2009-07-28T14:47:32.397 に答える
1

これは私が最終的に必要なことを正確に実行したコードです。

    Dim msgPath As String = message.Path
    Dim msgURI As String = message.URI
    Dim msgID As String = message.ID

    MyCredentialCache = New System.Net.CredentialCache()
    MyCredentialCache.Add(New System.Uri(_inboxPath), "BASIC", New System.Net.NetworkCredential(_username, _password, _domain))

    Dim request As WebRequest = WebRequest.Create(msgURI)
    request.Credentials = MyCredentialCache
    request.ContentType = "text/xml"
    request.Headers.Add("Translate", "f")
    Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)

    Dim file As FileStream = New FileStream(msgPath, FileMode.CreateNew)
    Dim stream As Stream = response.GetResponseStream()

    Dim buffer() As Byte = New Byte(4096) {}
    Dim len As Integer = stream.Read(buffer, 0, buffer.Length)

    While (len > 0)
        file.Write(buffer, 0, len)
        len = stream.Read(buffer, 0, buffer.Length)
    End While

    file.Close()
    stream.Close()
于 2009-08-03T18:16:33.593 に答える