使用MailMessage时从附件名称中删除文件路径

时间:2011-03-23 14:56:55

标签: c# asp.net email

我正在尝试使用MailMessage类发送附件。

var attachment = new Attachment(ConfigurationManager.AppSettings["pathToPDFs"] + pdfItem.Value);
mailMessage.Attachments.Add(attachment);

这会将文件添加为附件,但当我在电子邮件中收到文件时,名称为

//Inetpub//Path//To//pdf//name.pdf它应该只是name.pdf。

我哪里错了?

ConfigurationManager.AppSettings["pathToPDFs"]设为C://Inetpub//Path//To//pdf// pdfItem.Value是name.pdf

3 个答案:

答案 0 :(得分:1)

收到电子邮件附件时,它是否是正确的附件?

意思是,你真的得到了名字.pdf?

此外,您的位置应为:C:\\inetpub\\path\\to\\pdf\name.pdf

您是否尝试对文件位置进行硬编码并查看是否可以解决您的问题?

答案 1 :(得分:1)

我猜不得先承认。

构造函数可能使用完整路径作为名称。如果在创建对象后设置name属性,则可能有效。

var attachment = new Attachment(ConfigurationManager.AppSettings["pathToPDFs"] + pdfItem.Value); 

attachment.Name = pdfItem.Value;

mailMessage.Attachments.Add(attachment);

答案 2 :(得分:0)

我遇到了同样的问题,后来我发现这是因为我使用了文件的相对路径,即../../name.pdf。如果我获得了创建附件的完整路径,则电子邮件中的附件文件名不包含路径。

string full_file_name = Path.GetFullPath("../../name.pdf");
Attachment attachment = new Attachment(full_file_name);
mailMessage.Attachments.Add(attachment);