如何打开带附件的默认电子邮件客户端

时间:2017-07-19 04:43:12

标签: c# .net vb.net mapi mailmessage

我正在处理项目的问题,当我点击按钮时,会弹出默认的电子邮件客户端,如果有附件,它应该自动附加到默认的电子邮件客户端,如此

enter image description here

我已经尝试了很多方法如何做到这一点。首先我使用MAPI,但MAPI无法检测到我的默认电子邮件客户端,即使我已经在控制面板中设置它,它显示了这两个消息框

enter image description here

enter image description here

我已经在互联网上搜索了这些错误,但我没有明确或明确的答案。 HERE'S我在MAPI中使用的代码。

我还使用了mail:to协议来调用使用此行代码处理上述协议的默认电子邮件客户端。

Dim proc As System.Diagnostics.Process = New System.Diagnostics.Process()

            Dim filename = Convert.toChar(34) & "C:\USERS\JOSHUA~1.HER\DOWNLO~1\ASDPOR~1.PDF" & Convert.toChar(34)
            Debug.Writeline(filename)
            Dim asd As String = String.Format("mailto:someone@somewhere.com?subject=hello&body=love my body&Attach={0}", filename)
            proc.StartInfo.FileName = asd
            proc.Start()

但是,仍然没有运气。我读了mail:to不再处理附件的帖子,但是这行代码打开了我的默认电子邮件客户端,其中包含正文和主题,但没有附件。就filename变量而言,我已经尝试了每种路径格式,我读到我应该使用8.3路径格式。但仍然无法发挥作用。

我使用的最后一种方法是在THIS回答之后扩展System.Net.MailMessage.MailMessage()。这适用于打开默认电子邮件客户端并将附件附加到邮件,但这不可编辑,并且默认电子邮件客户端上没有发送按钮,因为这行代码只生成.eml文件并打开它。我正在考虑解析eml文件,但我仍然不知道如何以新的消息形式逐步打开默认的电子邮件客户端。这是照片

enter image description here

你们有任何想法如何使这成为可能吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我担心对于任何邮件客户端都不可能使用某种通用方法。但您可以使用System.Net.Mail.SmtpClient和一些简单的自定义UI轻松创建自己的解决方案。