我正在尝试使用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
答案 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);