2011-03-23 209 views
0

我正在尝试使用MailMessage类发送附件。使用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

难道你不是指:C:\\ inetpub \\ path \\ to \\ pdf \\? – 2011-03-23 15:05:10

+0

@Jack没有我的路径//不是\\ – Sally 2011-03-23 15:14:15

+0

@Jack将//更改为\\修复了问题。添加一个答案,我会接受它。 – Sally 2011-03-23 15:18:46

回答

1

当您收到电子邮件附件,它是正确的附件?

含义,你真的得到name.pdf吗?

而且,你的位置应该是:C:\\inetpub\\path\\to\\pdf\name.pdf

你试过硬编码的文件的位置,看是否能解决问题了吗?

+0

是的,它是电子邮件中的正确附件 – Sally 2011-03-23 15:12:47

1

我必须先承认,我猜测。

构造函数可能使用完整路径作为名称。如果在创建对象后设置了name属性(如果可能的话)。

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

attachment.Name = pdfItem.Value; 

mailMessage.Attachments.Add(attachment); 
0

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

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