【发布时间】:2018-11-08 17:04:32
【问题描述】:
我有以下代码,当我没有 attachment.add 行时可以使用。 (我已将地址和密码设为空白)。
请帮忙,我想我的附件有问题我只是不确定是什么!
内部异常是
{System.ObjectDisposedException:无法访问已处置的对象。 对象名称:'ReferenceReadStream'。在 System.Net.Mime.MimeBasePart.EndSend(IAsyncResult asyncResult) 在 System.Net.Mail.Message.EndSend(IAsyncResult asyncResult) 在 System.Net.Mail.SmtpClient.SendMessageCallback(IAsyncResult 结果)}
[HttpPost]
public async Task<String> PostProfilePicture(IFormFile file, int ID)
{
var name = Guid.NewGuid().ToString("N").ToUpper() + ".png";
try
{
var stream = file.OpenReadStream();
await sendEmail(stream, name);
}
catch (Exception ex)
{
return ex.Message.ToString();
}
return ""
}
public async Task sendEmail(Stream stream, String filename){
var attachment = new Attachment(stream, filename);
var smtpClient = new SmtpClient
{
Host = "smtp.gmail.com", // set your SMTP server name here
Port = 587, // Port
EnableSsl = true,
Credentials = new NetworkCredential("xxxxxxx@gmail.com", "xxxxxxxx")
};
var message = new MailMessage("xxxxxxx@gmail.com", "xxxxxxx@gmail.com");
message.Subject = "Hello Alec!!";
message.Body = "How are you doing.";
message.Attachments.Add(attachment);
await smtpClient.SendMailAsync(message);
}
}
【问题讨论】:
-
错误信息在标题中,“发送邮件失败”
-
糟糕。 {System.ObjectDisposedException:无法访问已处置的对象。对象名称:'ReferenceReadStream'。在 System.Net.Mime.MimeBasePart.EndSend(IAsyncResult asyncResult) 在 System.Net.Mail.Message.EndSend(IAsyncResult asyncResult) 在 System.Net.Mail.SmtpClient.SendMessageCallback(IAsyncResult 结果)}