【问题标题】:How to open Outlook "New mail message" window from VB.NET如何从 VB.NET 打开 Outlook“新邮件”窗口
【发布时间】:2011-05-31 02:04:54
【问题描述】:

我有一个场景,用户可以从网格中进行选择(在本地文件夹上上传文件),当用户按“发送”时,应用程序应该打开 Outlook“新邮件”窗口,其中选择文件作为附件(从网格中选择了哪个用户)。

任何帮助将不胜感激。

【问题讨论】:

    标签: .net vb.net email email-client


    【解决方案1】:
    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 被设置为默认客户端,它将被打开。


    无论如何,永远不要打开明确的非默认客户端(电子邮件、浏览器等)——这会破坏客户的意愿并使他们讨厌你。

    【讨论】:

    • 那么如何添加附件?
    • @MarcelDevG:如果您需要发送带附件的电子邮件,请以编程方式发送电子邮件:SmtpClient.Send(MailMessage)
    • 如果字符串长于大约 2000 个字符左右,这将不起作用,因为 Internet Explorer 对长 URL 的限制。
    • 是的,这很奇怪。我有一个带有内部错误报告器的应用程序,并且堆栈跟踪被截断。这确实是一个令人讨厌的限制。我在某处读到过,IE 是这里的罪魁祸首。不要问我为什么。
    • @abatishchev Process.Start(String.Format("mailto:{0}?subject=\"{1}\"&cc={2}&bcc={3 }&body=\"{4}\"",地址,主题,抄送,密件抄送,正文))。这是一些语法错误。你能解决这个问题吗?
    【解决方案2】:

    如果您特别想要 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,非常感谢,这正是我想要的,它工作正常,唯一不正常的是我现在有 2 个消息窗口(具有相同的设置、地址、正文、消息),知道发生了什么。再次感谢!
    • 我通过不将其显示为模态来解决它。 'omsg.Display(False) 再次感谢!
    • 我现在有点贪心 :) 在新的邮件消息窗口中我没有得到用户的默认签名,这个问题将如何解决?
    • 您真的应该打开一个新问题,并首先搜索现有答案。这是我找到的:outlookcode.com/codedetail.aspx?id=615 这是 VBA,但你应该能够翻译它。
    【解决方案3】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2013-10-08
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多