2014-01-11 49 views
0

我想將我在Outlook的vb編輯器中編寫的內容轉換爲vb6,以便它可以是獨立的可執行文件。檢索來自特定發件人的imap電子郵件

它是什麼:

  1. 解析來自新到達電子郵件特定URL從特定的發送者。 url指向一個網頁。讓我們稱之爲URL1
  2. 檢索該網頁的html內容並解析html內容中的另一個url。我們稱之爲URL2
  3. 從URL2下載pdf。

因此,在outlook vb環境中它是完全有效的。但是,由於我離開前景,我需要更換一些代碼,具體如下:

  1. 如何從特定發件人檢索電子郵件(imap)?現在我無法使用「Outlook.Items」,「.HTMLBody」等與Outlook相關的任何內容。
  2. 獲取電子郵件的html到我的html解析器中
  3. 如何限制程序僅對新電子郵件執行此操作,而不是對已經解析的電子郵件執行此操作?

基本上,這是在相關部分的代碼:

strURL1 = GetBetween(1, itm.HTMLBody, "<a href=""https://", """>", vbTextCompare) 

Private Function GetBetween(ByVal Start As Long, Data As String, _ 
StartString As String, EndString As String, _ 
Optional ByVal CompareMethod As VbCompareMethod = vbBinaryCompare) As String 

Dim lonStart As Long, lonEnd As Long 

'1. Find start string. 
lonStart = InStr(Start, Data, StartString, CompareMethod) 

If lonStart > 0 Then 
    '2. Move to end of start string. 
    lonStart = lonStart + Len(StartString) 

    '3. Find end string. 
    lonEnd = InStr(lonStart, Data, EndString, CompareMethod) 

    If lonEnd > 0 Then 
     '4. Extract data between start and end strings. 
     GetBetween = Mid$(Data, lonStart, lonEnd - lonStart) 
    End If 
End If 

端功能

--------------------- ----下面是一些代碼,我將不得不消除,我是新來的,我不確定他們做了什麼,如果我需要vb6的替代品嗎?-----

Private Sub Application_Startup() 
    Dim olApp As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 
    Set myOlItems = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub 


    Private Sub myOlItems_ItemAdd(ByVal item As Object) 

    On Error GoTo ErrorHandler 

    Dim Msg As Outlook.MailItem 

     If TypeName(item) = "MailItem" Then 
      Set Msg = item 
      LaunchURL (item) 
     End If 

    ProgramExit: 
     Exit Sub 
    ErrorHandler: 
     MsgBox Err.Number & " - " & Err.Description 
     Resume ProgramExit 

End Sub 


Private WithEvents myOlItems As Outlook.Items 

在此先感謝

+1

如果你想獲得這些從IMAP服務器沒有寄生Outlook中,您將需要找到一個IMAP的ActiveX庫。 – Bob77

+0

對不起,我忘記提到是我想打imap服務器(gmail)。我做了一些更多的研究,似乎我不得不爲imap功能定製庫。有沒有VB.net的免費資源?我不熟悉它,但從外觀上看,它看起來就像我在Outlook vb編輯器中做的那樣。但是,我還可以讓它成爲一個獨立的程序嗎? –

回答

0

你不說你是什麼版本的Exchange的興趣等等......

我有一個連接到Exchange 2003和讀取郵件箱的一些VB6代碼。它使用CDO 1.21庫(http://www.microsoft.com/en-gb/download/details.aspx?id=3671)。我在我的項目中引用了'\ Program Files \ ExchangeMapi \ cdo.dll'。然後我使用如下代碼:

Dim s As mapi.Session 
Dim Inbox As mapi.Folder 
Dim Msgs As mapi.Messages 
Dim Msg As mapi.Message 
Dim Sender As AddressEntry 
Dim i as Integer 
Dim txt as String 
Set s = CreateObject("MAPI.Session") 
s.Logon "", "", False, True, 0, True, ServerName & vbLf & AccountName 
Set Inbox = s.Inbox 
Set Msgs = Inbox.Messages 
For i = 1 To Msgs.Count 
    Set Msg = Msgs.Item(i) 
    Set Sender = Msg.Sender 
    txt = Msg.Text 
Next i 

我在XP虛擬機上運行這個原因,我沒有100%的召回,但它可能是CDO和Windows 7不喜歡對方。據我記得,從電子郵件中獲取HTML組織可能存在問題。我很抱歉,我不能更具體 - 它寫了很長時間(儘管它仍然運行)。

CDO參考 http://msdn.microsoft.com/en-us/library/ms526914%28v=exchg.10%29.aspx

+0

看起來他想要擊中IMAP服務器,而不是Exchange。 – Bob77

+0

是的,Imap,具體是gmail –

+0

啊我明白了。如果你完全離開,你可能會更好地重寫它:http://www.example-code.com/vb/imapReadFlags.asp – Rob

相關問題