我将 svg 对象转换为 byte[] 并将其存储在具有以下类的队列中
public class MailMessage
{
public string AttachmentName { get; set; }
public byte[] Attachment { get; set; }
}
但是,电子邮件永远不会被发送。我认为附件已损坏,因为如果我们跳过将附件添加到电子邮件中,那么它可以正常发送。
using (var stream = new MemoryStream(attachment))
{
var mailMessage = new MailMessage(this.from, new MailAddress(recipient)) { Subject = subject, Body = message };
// this is the line which if commented out allows the email to be sent
mailMessage.Attachments.Add(new Attachment(stream, filename));
MailSender().SendAsync(mailMessage, null);
}
一位同事建议 byte[] 可能由于 rabbit 存储消息的方式而受到损害,因此在使用内置函数存储之前对 byte[] 进行 base64 编码
Convert.ToBase64String(bytes)
Convert.FromBase64String(message.Attachment) // to retrieve
然而,这也没有奏效。
谁能想到为什么这无法发送并想到任何解决方法。
我正在考虑将图像存储在数据库中,并在发送电子邮件后将其删除,但这是最后一个资源。