【问题标题】:C# Add attachment to mailmessage without knowing the extensionC# 在不知道扩展名的情况下将附件添加到邮件中
【发布时间】:2013-06-23 10:28:26
【问题描述】:

系统生成具有不同扩展名的文件。 这些文件必须发送到一个电子邮件地址。

如何在不知道扩展名的情况下将文件放入附件中

例如“sample.xls”必须添加到附件中,但应用程序也可以添加“sample.txt”,我该如何处理?我现在有

attachment = new System.Net.Mail.Attachment(@"M:/" + filename + ".xls");

我想要这样的东西

attachment = new System.Net.Mail.Attachment(@"M:/" + filename); // this didnt work

以便它发送任何类型的文件。顺便说一句,文件名不是来自代码,而是来自没有任何扩展名的数据库,所以简单的“样本”,它必须发送带有未知扩展名的文件,并且必须在最后发送正确的扩展名.

非常感谢您的帮助!

【问题讨论】:

  • 你将不得不寻找它们并附上每个
  • 什么意思?有没有简单的解决方案?
  • 使用 directory.getfiles 和 filename + ".*" 列出所有匹配文件并将每个文件添加为附件
  • 如果您有两个名为“Sample”但扩展名不同的文件,您想同时添加还是只添加一个?
  • 不,可以有不同扩展名的不同文件,但不能有不同扩展名的重复文件名。所以 "Sample.XLS" "Sample2.CSV" 和 "Sample3.TXT" 可以在同一个目录下,但必须发送到其他邮箱。但是邮件部分并不重要。我需要知道如何在不知道扩展名的情况下附加文件,而只知道文件名 (sample,sample2,sample3);

标签: c# email smtp attachment mailmessage


【解决方案1】:

也许这可以帮助你(如果你想通过循环来执行它):

string[] files = Directory.GetFiles("Directory of your file");
foreach (string s in files)
{
    if (s.Contains(@"FileName without extension"))
    {
        attachment = new System.Net.Mail.Attachment(s);
        mailMessage.Attachments.Add(attachment);   // mailMessage is the name of message you want to attach the attachment
    }
}

【讨论】:

  • 我收到错误“当前上下文中不存在名称'目录'”
  • 你应该包括 System.IO;
  • 现在它不会将任何文件附加到邮件中。
  • 附件后 = new System.Net.Mail.Attachment(s);编写 mailMessage.Attachments.Add(attachment); // mailMessage 是您要附加附件的邮件消息..
【解决方案2】:

假设filename只是一个文件名,不包含其他路径组件:

foreach (string file in Directory.GetFiles(@"M:\", filename + ".*"))
{
   yourMailMessage.Attachments.Add(new System.Net.Mail.Attachment(file));
}

如果filename 确实包含子目录,那么

string fullPath = Path.Combine(@"M:\", filename + ".*");
foreach (string file in Directory.GetFiles(Path.GetDirectoryName(fullPath), Path.GetFileName(fullPath)))
{
   yourMailMessage.Attachments.Add(new System.Net.Mail.Attachment(file));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多