在.NET中创建电子邮件

时间:2009-05-12 14:33:01

标签: .net email outlook

我希望能够创建带附件的电子邮件,但不能发送。 电子邮件应该在Outlook中打开,用户可以自己发送。

我一直在使用Mailto:命令来打开新邮件,但是,Outlook客户端似乎不支持使用Mailto:命令添加附件。

我不想用COM来做这件事。

有谁知道实现这个目标的方法?我认为没有COM可能是不可能的。

6 个答案:

答案 0 :(得分:5)

如果要在Outlook中打开邮件,那么我很确定需要使用COM 。是否有任何特殊原因要与Outlook交互而不是使用SMTP和System.Net.Mail命名空间自动发送?

编辑:顺便说一句,您似乎可以使用 mailto 链接指定附件。例如:

mailto:foo@bar.com?subject=foo&body=bar&attachment="C:/foo/bar.txt"

您是否尝试使用Outlook?但是,我仍然建议使用COM,因为它可以让您更好地控制使用Outlook和邮件进行操作。

答案 1 :(得分:4)

我能想到的围绕COM(或VSTO)的唯一方法是使用Outlook的命令行选项。使用Process.Start,您可以使用 this answer VonC)中描述的选项启动Outlook:

  

打开新邮件:

    outlook.exe /c ipm.note
     

打开新邮件并填充   发件人:

    outlook.exe /c ipm.note /m someone@example.com
     

使用打开新邮件   附件:

    outlook.exe /c ipm.note /a filename
     

组合:

    outlook.exe /c ipm.note /m someone@example.com&subject=test%20subject&body=test%20body

您可以从以下注册表项中检索Outlook的安装文件夹:

Outlook 2007:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Outlook\InstallRoot

Outlook 2003:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Outlook\InstallRoot

Outlook XP:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Outlook\InstallRoot

答案 2 :(得分:1)

你已经在那里回答了 - 你可以通过COM(通过主互操作程序集)来完成,也可以直接通过SMTP发送(根本不会触及用户的电子邮件客户端)

答案 3 :(得分:0)

我不确定你是否可以将它链接到Outlook(我猜你必须使用MAPI),但System.Net.Mail很棒。

答案 4 :(得分:0)

您也可以将邮件保存到文件夹,而不是仅通过配置smtp设置发送

<system.net>
<mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory">
    <specifiedPickupDirectory pickupDirectoryLocation="c:\pickup-smtp\"/>        
  </smtp>
</mailSettings>

答案 5 :(得分:0)

易:

using Microsoft.Office.Interop.Outlook;

private void CreateMailItem()
{
    Outlook.MailItem mailItem = (Outlook.MailItem)
        this.CreateItem(Outlook.OlItemType.olMailItem);
    mailItem.Subject = "This is the subject";
    mailItem.To = Environment.UserName + "@example.com";
    mailItem.Body = "This is the message.";
    mailItem.Importance = Outlook.OlImportance.olImportanceLow;
    mailItem.Display(false);
}