2

我遇到了这个奇怪的问题,即使用 .NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件的底部,而不是 Lotus Note 中的附件。我只是不知道如何弄清楚,而且我无法访问客户端计算机,这使得调试非常困难。我可以采取哪些可能的步骤以及我需要注意的可能问题?

代码如下:

var smtpClient = new SmtpClient
{
   Host = ConfigurationManager.AppSettings["smtpServer"],
   Port = Convert.ToInt32(ConfigurationManager.AppSettings["smtpPort"])
};
var mailMessage = new MailMessage();
mailMessage.Attachments.Add(new Attachment(attachment, contentType)); 

//ContentType = "text/csv";
//attachment is the temp file disk path

谢谢。

4

4 回答 4

3

这有点牵强,但您可能想要设置附件的内容处置。

var mailMessage = new MailMessage();
Attachment data = new Attachment(attachment, contentType); 
ContentDisposition disposition = data.ContentDisposition;
disposition.FileName = "message.csv";
mailMessage.Attachments.Add(data);

改编自:http: //msdn.microsoft.com/en-us/library/system.net.mail.attachment.contentdisposition.aspx

于 2009-05-21T13:24:13.263 回答
0

在某些邮件客户端中,可以选择内联显示附件。

最明显的测试是从其他来源发送 .csv 文件附件,并查看有问题的客户端的结果。

于 2009-05-21T07:51:01.470 回答
0

尝试不设置内容类型而只设置扩展名。如果 Windows 有扩展名,它应该能够处理它,并且它可能会强制它将其作为附件处理,而不是尝试内联显示它。

确保您附加的文件具有扩展名。

于 2009-05-21T12:53:28.457 回答
0

只是为了测试,尝试将内容类型设置为类似 "application/octet-stream" 。例如(在我脑海中):

ContentType ct = new ContentType( "application/octet-stream" );
ct.Name = "message.csv";
data.ContentType = ct;
于 2009-05-22T12:20:38.637 回答