【问题标题】:Cannot add attachment file to email from c#无法将附件文件添加到来自 c# 的电子邮件
【发布时间】:2015-11-02 13:21:52
【问题描述】:

需要从 c# 程序打开带有附件的电子邮件客户端。

下一个 c# 示例无法打开带有附件的电子邮件客户端 (Outlook) 并显示错误消息

命令行参数无效。验证您的交换机 使用。

[Test]
public void FileToEmailClient()
{
    string testDataFilePath = @"..\..\Data\test.txt";
    Assert.That(File.Exists(testDataFilePath), Is.True);
    string subject = String.Format("File {0} attached", Path.GetFileName(testDataFilePath));
    string body = "body";
    string command = String.Format("mailto:?subject={0}&body={1}&attachment=\"{2}\"", subject, body, testDataFilePath);
    Process.Start(command);
}

【问题讨论】:

  • 通过快速互联网搜索,outlook 似乎不支持附件。此外,您可能需要指定电子邮件地址。
  • 在 Windows 资源管理器中,我可以借助上下文菜单命令“发送至 | 邮件收件人”打开带有附件的 Outlook。所以,我想实现相同的行为。

标签: c# windows email attachment


【解决方案1】:

我不确定“mailto”是否是正确的命令,但我认为您应该能够在 Command-line switches for Outlook for Windows 上找到答案

试试这个(请用你的值替换,比如 Outlook.exe 的路径)

var outlookPath = @"C:\Program Files\Microsoft Office 15\root\office15\OUTLOOK.EXE";
var command = @"/a ""C:\Temp\Signature.txt"" /m ""to@me.com&cc=cc@.com&subject=subject&body=body""";
Process.Start(outlookPath, command);

【讨论】:

  • 如果没有“附件”部分,该命令有效:打开带有已定义主题和正文的 Outlook。但我需要发送带有附件的电子邮件。
  • 暂时忽略 C#,然后尝试进入命令行,cd'ing 到 Office 目录并尝试运行 OUTLOOK.EXE 并使用 /a 开关将文件传递给它。对我来说效果很好。
  • 我尝试了 Windows 菜单中的下一个命令 Run mailto:?subject=File test.txt attach&body=body&attachment="..\\..\\Data\\test.txt" 并显示相同的错误
  • 尝试从您的运行命令"C:\Program Files\Microsoft Office 15\root\office15\OUTLOOK.EXE" /a "C:\Temp\Signature.txt" /m "to@me.com&cc=cc@me.com&subject=subject&body=body" 运行它,假设这是您的 Outlook exe 的正确路径,并且您的 C 驱动器中有名为 Temp 的文件夹,并且它有名为 Signature.txt 的文件
  • 我不想调用 Outlook.exe,我想打开默认电子邮件客户端
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2021-12-11
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多