使用 C# 向电子邮件添加附件
Posted
技术标签:
【中文标题】使用 C# 向电子邮件添加附件【英文标题】:Adding an attachment to email using C# 【发布时间】:2011-06-29 09:39:33 【问题描述】:我正在使用来自此答案Sending email in .NET through Gmail 的以下代码。我遇到的麻烦是在电子邮件中添加附件。如何使用下面的代码添加附件?
using System.Net.Mail;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";
var smtp = new SmtpClient
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
;
using (var message = new MailMessage(fromAddress, toAddress)
Subject = subject,
Body = body
)
smtp.Send(message);
提前致谢。
【问题讨论】:
【参考方案1】:提示:如果后面添加附件,邮件正文将被附件文件路径覆盖,因此请先附加,然后再添加正文
mail.Attachments.Add(new Attachment(file));
mail.Body = "正文";
【讨论】:
【参考方案2】:从您的new MailMessage
方法调用创建的message
对象具有.Attachments
属性。
例如:
message.Attachments.Add(new Attachment(PathToAttachment));
【讨论】:
这个答案不完整。如果附件不在文件系统中,但你有一个字节流怎么办? @barduro OP 没有询问那个特殊情况。为此,请参阅***.com/a/2583991/161052【参考方案3】:单行答案:
mail.Attachments.Add(new System.Net.Mail.Attachment("pathToAttachment"));
【讨论】:
【参考方案4】:像这样更正你的代码
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment("your attachment file");
mail.Attachments.Add(attachment);
http://csharp.net-informations.com/communications/csharp-email-attachment.htm
希望这会对你有所帮助。
里奇
【讨论】:
【参考方案5】:使用MSDN 中建议的附件类:
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
【讨论】:
MSDN 上的“官方文档”对附件实际附加的内容非常粗略。就像您的示例没有解释什么是“文件”或者如果它有效将附加什么。以上是关于使用 C# 向电子邮件添加附件的主要内容,如果未能解决你的问题,请参考以下文章
下载电子邮件附件时使用 C# 中的 Microsoft Security Essentials