内部异常是“其中一个流已被使用,无法重置为原点.”
我理解这种错误可能因为我的依恋而发生.
我在另一个班级创建了我的附件 –
Attatchment file;string fileContents = file.ReadAllText(filename);file = Attachment.CreateAttachmentFromString(fileContents,filename);
我将这种格式发送给发送电子邮件的班级.该课程发生以下情况 –
try{ email.Subject = subject; email.Body = body; if (file != null) { email.Attachments.Add(file); } _smtpClIEnt.Send(email);} catch{ mailSent = false;}
邮件总是发送给第一个收件人,但所有其他收件人都失败了.
任何想法为什么会发生这种情况?
您的解决方案是:
>发送一封邮件,但将所有收件人放在Bcc
字段中.
>为您发送的每封邮件创建附件 – 不要每次都重复使用同一个对象.
>这可能不起作用,但您可以尝试使用Attachment的构造函数,它将流作为参数而不是字符串.将所有字符串数据放入MemoryStream中,这样可以重新定位.例如:
public Stream StringToStream(string s){ MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.position = 0; return stream;}
然后这个:
var stream = StringToStream(file.ReadAllText(filename));Attatchment file = new Attachment(stream,filename);
注意:您正在错误地初始化附件对象.在带有两个字符串参数的constructor中,第二个参数是媒体类型,而不是文件名.
总结以上是内存溢出为你收集整理的c# – SMTPException其中一个流已被使用,无法重置为原点全部内容,希望文章能够帮你解决c# – SMTPException其中一个流已被使用,无法重置为原点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)