gpt4 book ai didi

c# - 如何使用 System.Net.Mail 向电子邮件添加附件?

转载 作者:可可西里 更新时间:2023-11-01 03:01:13 27 4
gpt4 key购买 nike

我有一个用 byte[] 表示的 excel 文档,我想将它作为电子邮件的附件发送。

我在构建附件时遇到了一些麻烦。

我可以创建一个具有以下构造函数的附件:

(Stream contentStream, ContentType contentType)
(Stream contentStream, string name)
(Stream contentStream, string name, string mediaType)

我目前的想法是从 byte[] 创建一个 MemoryStream 并将其传递给创建附件的方法。

不幸的是,我看不到从 MemoryStream 中获取预期文件名和内容类型的方法,而且我也看不到如何提供正确的内容类型。有用于纯文本、Pdf、Rtf 等的选项,但我看不到任何选项会立即跳出我应该用于 Excel 文档的选项。

我能找到的最接近的是 MediaTypeNames.Application.Octet其中指出:

The Octet member designates that the attachment contains generic binary data.

但是,即使这是要使用的,除非它可以作为 Stream 的属性传递,否则我发送电子邮件的方法将只能将 byte[] 作为 Excel 文档发送...

我可以使用其他类型的 Stream 吗?或者我是否必须创建自己的 Stream 类型以包含我需要的详细信息。

肯定有人以前做过这件事,微软肯定会考虑到这个级别......

如有任何帮助,我们将不胜感激。

更新:请不要投票给任何使用将文件名作为字符串的构造函数的答案。我真的需要帮助使用那些采用 Stream 的那些......我想避免将文件写入磁盘,通过电子邮件发送,然后立即删除它。因为有一种方法可以让我做到这一点,所以如果可能的话,我想使用那个方法。

解决方案更新

Conrad 设法找到了我要找的东西!谢谢大佬!

我只会记录建议的解决方案,以防万一提供的链接中的内容出现问题。

此解决方案归功于 www.systemnetmail.com

static void AttachmentFromStream()
{

//create the mail message
MailMessage mail = new MailMessage();

//set the addresses
mail.From = new MailAddress("me@mycompany.com");
mail.To.Add("you@yourcompany.com");

//set the content
mail.Subject = "This is an email";
mail.Body = "this content is in the body";

//Get some binary data
byte[] data = GetData();

//save the data to a memory stream
MemoryStream ms = new MemoryStream(data);

//create the attachment from a stream. Be sure to name the data
//with a file and
//media type that is respective of the data
mail.Attachments.Add( new Attachment( ms, "example.txt", "text/plain" ));

SmtpClient smtp = new SmtpClient("127.0.0.1");
smtp.Send(mail);
}

在我的例子中,这只是意味着我必须更改我的方法以将文件名和文件格式作为字符串。我将尝试使用 Octet one...但如果失败,我将只传递官方 MIME 类型。

考虑到所有因素,这是一个非常明显的解决方案……但我非常感谢解决它的帮助……好在这个解决方案将被记录下来,以供将来遇到同样问题的程序员使用。

再次感谢大家的帮助!

最佳答案

附件构造函数确实有一个可以满足您需要的构造函数。我假设您正在使用 .NET Framework 2 中的 System.Net.MailMessage 类。如果是这样的话 read this link一些你需要的示例代码

关于c# - 如何使用 System.Net.Mail 向电子邮件添加附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com