【问题标题】:getting the path of a MailMessage attachment获取 MailMessage 附件的路径
【发布时间】:2011-09-27 16:49:09
【问题描述】:

我正在使用 MailMessage 队列,在退出程序时我想保存队列的内容。

我创建了一个临时列表并将队列的内容传递给它。之后使用一个简单的 StreamWriter 写出每个信息。

我似乎唯一无法获得的是附件的路径。据我所知,我不能简单地保存邮件消息,所以我认为这也可以,但如果有更简单/不同的解决方案,那就太好了。

List<MailMessage> temp = queue.ToList<MailMessage>();
Stream stream = File.Open("Queue" +".osl", FileMode.Create);
StreamWriter s = new StreamWriter(stream);
foreach (MailMessage x in temp)
{
    s.WriteLine(x.From.Address + x.To[0].Address + x.Body + x.Subject + x.Attachments[0].Name);
}
s.Close();
stream.Close();

【问题讨论】:

  • 附件的名称只是文件的名称,我不知道完整的路径,所以如果我重新打开程序,我将无法再次添加附件。
  • 我想通了!使用 FileInfo asd = new FileInfo(x.Attachments[0].Name);我得到了完整的信息,然后我可以把它写出来并再次使用它来重新附加文件。
  • @SaintHUN - 如果你已经解决了,你可以发布你的方法作为答案,然后在几天后接受它。
  • 我还是个新会员,所以我需要 7 个小时才能回答这个问题:P
  • 该死的没关系,它不能解决问题。

标签: c# save mailmessage


【解决方案1】:

你也可以使用:

Path.GetFullPath(x.Attachments[0].Name);

【讨论】:

  • 是的,这会检索完整路径,但不是实际文件的路径。此方法将仅假定文件是程序所在的位置。似乎最简单也是迄今为止唯一可行的方法是在我添加附件并将信息保存到那里时使用列表。
  • -1 这将程序集路径与附件名称连接起来,与问题无关...
【解决方案2】:

我知道这是一个老问题,但这里没有答案,这确实有效:

(attachmentObject.ContentStream as System.IO.FileStream).Name

在您的具体情况下,它将是:

s.WriteLine(x.From.Address + x.To[0].Address + x.Body + x.Subject + (x.Attachments[0].ContentStream as System.IO.FileStream).Name);

希望对某人有所帮助!

【讨论】:

  • 最后但同样重要的是:您从 Microsoft.SharePoint.Client 参考中获得 ContentStream。经过测试,它也适用于我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多