我像这样添加一个附件:
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不支持它。)
发布于 2014-06-27 20:38:04
您必须重命名该文件。如果您希望避免文件名冲突,您可以始终拥有一个临时文件夹,您可以将文件复制到该文件夹中并重命名它们。然后将这个新文件附加到您的电子邮件中,发送电子邮件,无论发送成功与否,在方法结束时删除该文件。
无论如何,在通过电子邮件发送完附件后将其删除可能是一个很好的做法,除非您需要保留这些文件以用于某种审计目的。
发布于 2014-06-27 20:50:45
请改用STMP邮件。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);https://stackoverflow.com/questions/24451759
复制相似问题