2015-07-21 139 views
1

我只需要指出了正確的方向,如何 發送使用VBA郵件的Lotus iNotes從接入發送電子郵件。我將Lotus作爲嵌入到Intranet系統中的電子郵件系統。通過安裝在內部網絡

作爲一種嘗試,這種代碼編寫的電子郵件,並通過蓮花發送(安裝在PC):

Dim ns As New NotesSession 
Dim db As NotesDatabase 
Dim doc As NotesDocument 
Dim sender, recipient As String 
'sender = Forms![LogIn]![TxtEmail] 
If (Not IsNull(DLookup("Email", "Users", "UserName ='" & Me.Affectation.Value & "'"))) Then 
    recipient = DLookup("Email", "Users", "UserName ='" & Me.Affectation.Value & "'") 
    MsgBox "recipient *" & recipient & "*" 
    Else 
    MsgBox " recipient null" 
End If 

If Not (ns Is Nothing) Then 

    Call ns.InitializeUsingNotesUserName("CN=MyuserName/O=Cmpany", "password") 

    Set db = ns.GetDatabase("ServerName", "mail\MyuserName.nsf", False) 
    If (Not (db Is Nothing)) Then 
     Set doc = db.CreateDocument() 
     doc.Form = "Memo" 
     doc.SendTo = recipient 
     doc.subject = "Email Subject" 
     Dim rt As NotesRichTextItem 
     Set rt = doc.CreateRichTextItem("Body") 
     rt.AppendText ("Body text") 
     doc.Send (False) 
     Set rt = Nothing 
     Set doc = Nothing 
     MsgBox "Message Sent." 
    Else 
    MsgBox "db Is Nothing" 
    End If 
    Set db = Nothing 
    Set ns = Nothing 
Else 
    MsgBox "ns Is Nothing" 
End If 

我在這裏的問題是,如何設置此代碼,以使目標蓮花一個在我們的內部網:我的登錄是這樣的「[email protected]」和應用程序被訪問「http://mail.mycompany.com/mail/username.nsf ......」

+0

我不確定我們是否理解了某些東西。您的PC上安裝了Lotus Notes,它可以使用上述代碼發送郵件。您還可以通過Intranet訪問iNotes。但是,PC上安裝的Notes客戶端可能使用的是與Intranet上的iNotes電源相同的服務器。事實上,這是非常普遍的情況。你知道你的情況是否屬實,或者你知道他們是不同的服務器嗎?如果他們是同一臺服務器,爲什麼你需要改變任何東西? –

+0

@RichardSchwartz感謝您的回覆。事實上,是的,我在電腦上安裝了一個Notes客戶端,但我沒有使用它,甚至沒有配置,只需要iNotes,我的意思是設置上面的代碼連接到我的Intranet上的帳戶併發送電子郵件。當我執行代碼時,它會打開本地安裝的客戶端。 – Oumaya

回答

2

不幸的是,這是不可能這樣。這個「嵌入」的Lotus Notes就像一個簡單的網站。它被稱爲「iNotes」,並且沒有在客戶端上安裝任何DLL(除非您爲IE安裝ActiveX控件,但這對您的問題沒有任何幫助)。

要通過iNotes發送eMails,您需要一個完整的新方法,您需要Domino管理員來幫助您:您可以使用web服務發送郵件(必須在服務器上啓用該郵件),也可以使用使用DIIOP(再次:DIIOP-任務必須在服務器上加載)。

要至少撰寫電子郵件,您可以使用的mailto:協議,但需要設置iNotes來是你mailto-與協議處理程序:

  1. 打開Internet Explorer瀏覽器,登錄到iNotes的(http://mail.mycompany.com/mail/username.nsf )。請注意,此選項目前不適用於Firefox瀏覽器用戶。
  2. 單擊位於右上角的「首選項」按鈕。
  3. 在iNotes首選項的「基本」選項卡上查找「默認郵件客戶端」部分。
  4. 單擊「設爲默認值」按鈕。

使用此方法,您不能直接發送郵件,但需要用戶按「發送」。

1

不知道這件事,因爲這代碼是很老的,因爲我們知道使用Outlook,我還沒有使用它在很長一段時間,但可能是一些見解:

我似乎記得,如果你添加doc.From = ns.CommonUserName,這會自動選擇你的會話!

而且全碼:

Dim session As Object 
Dim db As Object 
Dim doc As Object 
Dim attachme As Object 
Dim EmbedObj As Object 
Dim attachment() As String 
Dim i As Integer 

Set session = CreateObject("notes.notessession") 
Set db = session.GetDatabase("", "") 
Call db.OPENMAIL 

Set doc = db.CreateDocument 

With doc 
    .Form = "Memo" 
    .sendto = MailDestinataire 
    '.copyto = MailDestinataire2 
    .Subject = Sujet 
    .Body = CorpsMessage 
    .From = session.CommonUserName 
    .posteddate = Now 
    .SaveMessageOnSend = True 
End With 
2

我不知道你的意思是「我有蓮花作爲被嵌入到我們的內聯網系統,電子郵件系統」。

您需要在本地安裝Notes客戶機能夠在自己的代碼中使用COM。使用公司帳戶的ID文件(必須在Notes數據目錄中爲本地文件)指向您的郵件文件的網絡服務器。

但你不能你的程序指向iNotes的實例的Web服務器上,它必須與Notes客戶機訪問Domino服務器上。

你可以做的是創建服務器,在那裏你必須將讀取HTTP POST數據,創建一個電子郵件,然後發送出去的代理上了一個新的Web應用程序。 然後你只需從你的應用程序中創建一個HTTP文章。

這裏有一對夫婦的博客文章我寫,可以幫助你:

http://blog.texasswede.com/free-code-class-to-read-url-name-value-pairs/

http://blog.texasswede.com/parse-url-in-domino-agent/

+0

謝謝卡爾珍貴的聯繫,現在更清楚了 – Oumaya

2

你或許應該改變你的代碼通過SMTP發送郵件,而不是使用Notes API對象。微軟提供了一個名爲CDO的對象模型,我認爲它會對你有所幫助。詳細信息請參見answer to theis question。您只需要主機名或IP地址信息即可連接到支持入站SMTP的基礎架構中的Domino服務器。