使用System.Web.Mail在C#中设置电子邮件附件名称

时间:2014-06-27 12:23:05

标签: c# email email-attachments

我添加了这样的附件:

System.Web.Mail.MailAttachment attachment = new System.Web.Mail.MailAttachment(AttachmentPath);   

System.Web.Mail.MailMessage mailMsg = new System.Web.Mail.MailMessage();
....
mailMsg.Attachments.Add(attachment);

但是我想把它作为一个不同的名字附加,实际的文件名很长而且令人困惑,因为它是一个临时文件。我希望它附加如“SalesOrderNo1.pdf”,是否有一种简单的方法可以做到这一点而无需复制文件名冲突的高风险文件?

(我不能使用System.Net.Mail,因为我必须连接使用隐式SSL的服务器,但System.Net.Mail不支持它。)

2 个答案:

答案 0 :(得分:2)

您必须重命名该文件。如果要避免文件名冲突,可以始终使用临时文件夹将文件复制到其中并在其中重命名。然后将此新文件附加到您的电子邮件中,发送电子邮件,无论发送成功与否,请在方法结束时删除该文件。

无论如何,在您通过电子邮件发送附件时删除附件可能是一种很好的做法,除非您需要将文件保留用于某种审核目的。

答案 1 :(得分:2)

请改用STMP Mail。 System.Web.Mail.MailMessage已过时。您可以使用以下代码使用smtp邮件。通过此,您可以更改附件名称。这是使用smtp客户端发送电子邮件的完整代码。请根据需要更改所有参数

                SmtpClient smtpClient = new SmtpClient();
                MailMessage message = new MailMessage();
                smtpClient.Host = "host name";
                smtpClient.Port = 25;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials = new NetworkCredential("user name", "password");
                smtpClient.EnableSsl = false;
                message.IsBodyHtml = true;

                message.Priority = MailPriority.Normal;
                message.From = new MailAddress("from email address");
                string file = @"your file complete path";
                Attachment data = new Attachment(file);
                message.Attachments.Add(data);
                data.Name = "newfilename";
                message.To.Add("testemailaddress");
                message.Subject = "test email";
                message.Body = "test email";
                smtpClient.Send(message);