【问题标题】:Send email with attachment from WinForms app?从 WinForms 应用程序发送带有附件的电子邮件?
【发布时间】:2010-10-16 21:40:23
【问题描述】:

我目前正在使用 Process.Start 从我的 WinForms 应用程序发送简单的电子邮件。你能想出任何方法在电子邮件中添加文件附件吗? (编辑:使用 Process.Start?)

这是我现在使用的:

Process.Start("mailto:test@test.invalid?subject=" + HttpUtility.HtmlAttributeEncode("Application error report") + "&body=" + body);

【问题讨论】:

标签: c# .net winforms


【解决方案1】:

试试这样的 -->

MailMessage theMailMessage = new MailMessage("from@email.com", "to@email.com");
theMailMessage.Body = "body email message here";
theMailMessage.Attachments.Add(new Attachment("pathToEmailAttachment"));
theMailMessage.Subject = "Subject here";

SmtpClient theClient = new SmtpClient("IP.Address.Of.Smtp");
theClient.UseDefaultCredentials = false;
System.Net.NetworkCredential theCredential = new System.Net.NetworkCredential("user@name.com", "password");
theClient.Credentials = theCredential;
theClient.Send(theMailMessage);

好的,根据您的编辑和附加信息,我找到了Jon Galloway、"Sending files via the default e-mail client" 的这篇博文。

这看起来像您可能正在寻找的东西,尽管我不承认任何有关这种方式的知识,因为我一直使用我发布的方法。

希望对你有用。

【讨论】:

  • 我忘了问的重要问题。你想怎么寄? Outlook、谷歌等......
  • +1 这将教会我花时间看看这是否甚至可以使用 Process.Start :) 事实证明你不能以这种方式添加附件,所以已经正确的 System.Net.Mail成为更好的答案。
  • 有趣的是,如果你在 SO 上搜索我的旧帖子,我几乎在一年前发布了一个几乎相同的问题。我想这是我的回馈!我喜欢!
  • 用户的默认电子邮件客户端打开并显示准备发送的邮件。到目前为止,我一直避免使用 SmtpClient,因为我不想将我的程序变成电子邮件客户端。用户在他们的电子邮件主机名中查找和编辑可能是一个支持问题。我希望有人知道 Process.Start 的技巧...我应该更清楚地说明这一点。
  • MAPISendMail 似乎适用于 win7-64 和 Thunderbird,这是我唯一用于测试的电子邮件客户端。包装类代码链接到 Galloway 文章中。我猜现在很多用户甚至都不会使用本地电子邮件客户端(gmail)所以不知道我会怎么做。
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 2021-03-05
  • 2015-09-09
相关资源
最近更新 更多