Excel VBA是否使用IBM Notes更改电子邮件地址?
我有以下vba代码,它使用IBM Notes从excel发送电子邮件 但是,我希望能够更改发件人地址。 请问有人能告诉我哪里出了问题吗 私有子工作表_更改(ByVal目标作为范围)Excel VBA是否使用IBM Notes更改电子邮件地址?,excel,vba,lotus-notes,Excel,Vba,Lotus Notes,我有以下vba代码,它使用IBM Notes从excel发送电子邮件 但是,我希望能够更改发件人地址。 请问有人能告诉我哪里出了问题吗 私有子工作表_更改(ByVal目标作为范围) 如果不相交(目标,范围(“M:M”))则为零 如果Target.Cells.Count
如果不相交(目标,范围(“M:M”))则为零
如果Target.Cells.Count<3,则
'将自动化所需的对象设置为lotus notes
作为字符串的Dim Ref
Dim TrueRef作为字符串
Ref=范围(“H”和(ActiveCell.Row)).Value
如果Ref=“WSM”,则
TrueRef=“WES”
其他的
如果Ref=“否”,则
TrueRef=“不”
其他的
如果Ref=“ENF”,则
TrueRef=“ENF”
其他的
如果Ref=“LUT”,则
TrueRef=“MAG”
其他的
如果Ref=“NFL”,则
TrueRef=“NOR”
其他的
如果Ref=“RUN”,则
TrueRef=“运行”
其他的
如果Ref=“SOU”,则
TrueRef=“SOU”
其他的
如果Ref=“SOU”,则
TrueRef=“SOU”
其他的
如果Ref=“BRI”,则
TrueRef=“BRI”
其他的
如果Ref=“LIV”,则
TrueRef=“LIV”
其他的
如果Ref=“BEL”,则
TrueRef=“BEL”
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
''''''''''''''''''''''''''''''''''
作为字符串的Dim nMailBody
将主题设置为字符串
Dim nMailRecipient作为变体
将nMail作为对象
作为对象的会话
作为对象的数据库
将nMime作为对象
作为对象的Dim nMailStream
将卷尺设置为对象
将nSomeMailBodyText设置为字符串
Dim amountOfRecipients作为整数
nSomeMailBodyText=“你好,
你好吗?”
nMailSubject=“一封很棒的电子邮件”
Set nSession=CreateObject(“Notes.NotesSession”)
Set ndabase=nSession.GETDATABASE(“,”)
调用ndabase.OPENMAIL
设置nMail=ndabase.CREATEDOCUMENT
nMail.Principal=“伪造_user@example.com"
nMail.SendTo=“标记。obrien@lidl.co.uk"
nMail.subject=“这是测试”
nSession.CONVERTMIME=False
设置nMime=nMail.CREATEMIMEENTITY
设置nMailStream=nSession.CREATESTREAM
'vBody contient le texte au格式Html
调用nMailStream.WRITETEXT(nSomeMailBodyText)
调用nMailStream.WRITETEXT(“-再次-”)
调用nMailStream.WRITETEXT(nSomeMailBodyText)
调用nMailStream.WRITETEXT(
)
调用nMailStream.WRITETEXT(
)
'----读取并粘贴签名-------------------------------------
'获取标准签名位置
nSignatureLocation=ndabase.GETPROFILEDOCUMENT(“CalendarProfile”).GETITEMVALUE(“签名”)(0)
设置nChild=nMime.CREATECHILDENTITY
调用nChild.SETCONTENTFROMTEXT(nMailStream,“text/html;charset=iso-8859-1”,ENC_NONE)
调用nMailStream。关闭
nSession.CONVERTMIME=True
'发送文档
nMail.PostedDate=Now()'获取要显示在“已发送邮件”文件夹中的邮件
nMail.SEND 0,收件人
如果结束
如果结束
端接头
NotesDocument.Send方法不允许经过身份验证的用户伪造发件人的发件人地址。在Domino服务器上运行的代码可以做到这一点,但您的代码是作为客户机连接的
有两种方法可以解决这个问题。我将提到第一个,但必须告诉您,IBM不支持它,也不推荐它,特别是对于Notes新手开发人员。它涉及将文档直接写入Domino路由器邮箱(mail.box),而不是使用NotesDocument.Send方法
第二种方法是使用Domino服务器上运行的代码发送电子邮件。一种方法是让代码将NotesDocument保存在Domino服务器上的数据库中,并在该数据库中设置后台代理,以便在创建新文档时运行。代理中的代码将设置Principal字段,我看到您已经尝试过了,但正如我前面所说的,当使用NotesDocument.send在客户端代码中运行时,它不起作用。还有很多其他的方法。正如Richard已经说过的,你不能像那样从客户端欺骗发送者,除非你使用未记录的方法。我有一个邮件通知的Notes类(可以在我的博客上找到),但是Richard是正确的,因为作为初学者(根据您发布的代码,这一点非常清楚),您可能不应该尝试使用该方法 另一方面,为什么要使用这种复杂的方式来设置TrueRef的值? 您不能使用Select Case语句吗?甚至只是简化您的代码:
TrueRef = Ref
If Ref = "WSM" Then
TrueRef = "WES"
ElseIf Ref = "LUT" Then
TrueRef = "MAG"
ElseIf Ref = "NFL" Then
TrueRef = "NOR"
End If
或
TrueRef = Ref
If Ref = "WSM" Then
TrueRef = "WES"
ElseIf Ref = "LUT" Then
TrueRef = "MAG"
ElseIf Ref = "NFL" Then
TrueRef = "NOR"
End If
If Ref = "WSM" Then
TrueRef = "WES"
ElseIf Ref = "LUT" Then
TrueRef = "MAG"
ElseIf Ref = "NFL" Then
TrueRef = "NOR"
Else
TrueRef = Ref
End If