我只需指出正确的方向,如何 使用VBA发送电子邮件。我将Lotus作为一个嵌入到我们的Intranet系统中的电子邮件系统。
试一试,此代码准备一封电子邮件并通过Lotus(安装在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
我的问题是如何设置此代码使目标Lotus成为我们Intranet上的目标:我的登录名是" 39398C@mycompany.com"并且应用程序由" http://mail.mycompany.com/mail/username.nsf ..."
访问答案 0 :(得分:2)
不幸的是,这种方式不可能。您称之为“嵌入式”Lotus Notes是一个简单的网站。它被称为“iNotes”,并且在您的客户端上没有安装任何dll(除非您为IE安装ActiveX控件,但这对您的问题没有任何帮助)。
要通过iNotes发送电子邮件,您需要一个全新的方法,并且您需要Domino管理员来帮助您:您可以使用Web服务发送邮件(必须在服务器上启用)或者您可以使用DIIOP(再次:DIIOP-任务必须加载到服务器上)。
要至少撰写电子邮件,您可以使用mailto:协议,但您需要将iNotes设置为您的mailto协议处理程序:
使用此方法,您无法直接发送邮件,但需要用户按“发送”。
答案 1 :(得分:2)
我不确定你的意思是“我将Lotus作为嵌入我们内联网系统的电子邮件系统”。
您需要在本地安装Notes客户端才能在您自己的代码中使用COM。使用您的公司帐户的ID文件(必须在Notes数据目录中是本地的),并指向网络上用于邮件文件的服务器。
但是您无法将程序指向Web服务器上的iNotes实例,它必须位于使用Notes客户端访问的Domino服务器上。
您可以做的是在服务器上创建一个新的Web应用程序,您可以在其中拥有一个代理程序,该代理程序将读取HTTP POST数据,创建电子邮件并将其发送出去。 然后,您只需从应用程序发出HTTP帖子。
以下是我撰写的一些可能对您有帮助的博客文章:
http://blog.texasswede.com/free-code-class-to-read-url-name-value-pairs/
答案 2 :(得分:2)
您应该更改代码以通过SMTP发送邮件,而不是使用Notes API对象。 Microsoft提供了一个名为CDO的对象模型,我认为它可以帮助您。有关详细信息,请参阅answer to theis question。您只需要主机名或IP地址信息即可连接到支持入站SMTP的基础架构中的Domino服务器。
答案 3 :(得分: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