如何从VB.NET打开Outlook“新邮件消息”窗口

4

我有一个场景,用户可以从网格中选择(上传到本地文件夹的)文件,当用户按下“发送”按钮时,应用程序应该打开Outlook“新邮件消息”窗口,并将选定的文件作为附件添加到邮件中。

任何帮助都将不胜感激。

3个回答

13
Imports System.Diagnostics

Process.Start(String.Format("mailto:{0}", address))

' set all possible parameters: '

Process.Start(String.Format("mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}", address, subject, cc, bcc, body))

' also escape spaces: '

Process.Start(String.Format("mailto:{0}?subject=\"{1}\"&cc={2}&bcc={3}&body=\"{4}\"", address, subject, cc, bcc, body))

使用“next”命令来包含新的换行符:

body = body.Replace(Environment.NewLine ,"%0A")

该代码会打开默认的电子邮件客户端,并弹出新消息构成对话框。

如果Outlook被设置为默认客户端,则会被打开。


无论如何,千万不要明确地打开非默认的客户端(电子邮件、浏览器等),这会破坏客户的意愿并让他们憎恨你。


1
你如何添加附件? - MarcelDevG
@MarcelDevG:如果您需要发送带附件的电子邮件,请通过编程方式发送电子邮件:SmtpClient.Send(MailMessage) - abatishchev
如果字符串太长,超过了2000个字符左右,就不会起作用,因为在长的URL上,Internet Explorer有一个限制。 - nalply
是的,这很奇怪。我有一个带有内部错误报告器的应用程序,堆栈跟踪被截断了。这真的是一个非常烦人的限制。我在某个地方读到过,IE 是罪魁祸首。不要问我为什么。 - nalply
1
@abatishchev,这行代码Process.Start(String.Format("mailto:{0}?subject="{1}"&cc={2}&bcc={3}&body="{4}"", address, subject, cc, bcc, body))有问题,可能是语法错误。你能修复一下吗? - tmighty

7
Dim Outl As Object
Outl = CreateObject("Outlook.Application")
If Outl IsNot Nothing Then
    Dim omsg As Object
    omsg = Outl.CreateItem(0)
    omsg.To = "yusuf@hotmail.com"
    omsg.bcc = "yusuf@gmail.com"
    omsg.subject = "Hello"
    omsg.body = "godmorning"
    omsg.Attachments.Add("c:\HP\opcserver.txt")
    'set message properties here...'
    omsg.Display(True) 'will display message to user

7

如果你想具体指定一个Outlook邮件,并且想要更多发送选项(正文文本、附件、密送等):

Dim Outl As Object
Outl = CreateObject("Outlook.Application")
If Outl IsNot Nothing Then
    Dim omsg As Object
    omsg = Outl.CreateItem(0) '=Outlook.OlItemType.olMailItem'
    'set message properties here...'
    omsg.Display(True) 'will display message to user
End If

亲爱的MarcelDevG,非常感谢,这正是我想要的,并且它运行良好,唯一异常的事情是现在我有两个消息窗口(具有相同的设置、地址、正文和消息),你有什么想法。再次感谢! - Adnan Badar
我通过不将其显示为模态窗口来解决了这个问题。 'omsg.Display(False) 再次感谢! - Adnan Badar
现在我有点贪心了 :) 在新邮件消息窗口中,我没有得到用户的默认签名,这个问题该如何解决? - Adnan Badar
你应该真正打开一个新问题,并首先搜索现有的答案。这是我找到的:http://www.outlookcode.com/codedetail.aspx?id=615它是VBA代码,但你应该能够将其翻译成其他编程语言。 - MarcelDevG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接