C# 如何将1个附件从内存流发送到2个电子邮件地址?
我创建了类似字符串的文件内容:C# 如何将1个附件从内存流发送到2个电子邮件地址?,c#,asp.net,vb.net,memory,stream,C#,Asp.net,Vb.net,Memory,Stream,我创建了类似字符串的文件内容: string fileContent = CreateContent(); 然后我创建了附件: Attachment fileAttachment = null; var stream = new MemoryStream(); var writer = new StreamWriter(stream); if (!String.IsNullOrEmpty(fileContent)) { writer.Write(fileContent); wr
string fileContent = CreateContent();
然后我创建了附件
:
Attachment fileAttachment = null;
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
if (!String.IsNullOrEmpty(fileContent))
{
writer.Write(fileContent);
writer.Flush();
fileAttachment = new Attachment(
stream,
attachmentName,
MediaTypeNames.Text.Plain);
}
在此之后,我发送了电子邮件:
SendEmail.SendEmailWithFile(strEmailSubject, fromEmail, fileAttachment);
并关闭:
writer.Close();
stream.Close();
看起来一切都很好。但事实并非如此。
问题是sendmailwithfile
方法应该将fileAttachment
发送给两个不同的人:
Public Sub SendEmailWithFile(strEmailSubject, fromEmail, fileAttachment)
Dim emlEmail As Net.Mail.MailMessage = s.GetMailMessage()
Dim smtp As Net.Mail.SmtpClient = New Net.Mail.SmtpClient
emlEmail.To.Add(user.EmailAddress)
...
If fileAttachmentIsNot Nothing Then
emlEmail.Attachments.Add(fileAttachment)
End If
smtp.Send(emlEmail)//1
If Not String.IsNullOrEmpty(configurationManager.AppSettings("additionalEmailTo")) Then
emlEmail.To.Clear()
Dim address As String = configurationManager.AppSettings("additionalEmailTo")
emlEmail.To.Add(address)
smtp.Send(emlEmail)//2
End If
End Sub
电子邮件发送时没有错误,但第一封电子邮件(//1)包含空文件,第二封电子邮件(//2)包含完整文件
如何将正确的文件发送到两个电子邮件地址?为什么要发送两次?您可以使用
emlEmail.To.Add
添加更多收件人,或者如果不想让他们看到彼此的电子邮件地址,请使用密件抄送类
Public Sub SendEmailWithFile(strEmailSubject, fromEmail, fileAttachment)
Dim emlEmail As Net.Mail.MailMessage = s.GetMailMessage()
Dim smtp As Net.Mail.SmtpClient = New Net.Mail.SmtpClient
emlEmail.To.Add(user.EmailAddress)
If Not String.IsNullOrEmpty(configurationManager.AppSettings("additionalEmailTo")) Then
Dim address As String = configurationManager.AppSettings("additionalEmailTo")
emlEmail.To.Add(address)
End If
...
If fileAttachmentIsNot Nothing Then
emlEmail.Attachments.Add(fileAttachment)
End If
smtp.Send(emlEmail)//1
End Sub
为什么要寄两次?您可以使用
emlEmail.To.Add
添加更多收件人,或者如果不想让他们看到彼此的电子邮件地址,请使用密件抄送类
Public Sub SendEmailWithFile(strEmailSubject, fromEmail, fileAttachment)
Dim emlEmail As Net.Mail.MailMessage = s.GetMailMessage()
Dim smtp As Net.Mail.SmtpClient = New Net.Mail.SmtpClient
emlEmail.To.Add(user.EmailAddress)
If Not String.IsNullOrEmpty(configurationManager.AppSettings("additionalEmailTo")) Then
Dim address As String = configurationManager.AppSettings("additionalEmailTo")
emlEmail.To.Add(address)
End If
...
If fileAttachmentIsNot Nothing Then
emlEmail.Attachments.Add(fileAttachment)
End If
smtp.Send(emlEmail)//1
End Sub
如果我删除stations:writer.Close();stream.Close();然后一切正常。你们觉得怎么样,伙计们?不关闭memorystream对吗?如果我删除stations:writer.close();stream.Close();然后一切正常。你们觉得怎么样,伙计们?不关闭memorystream对吗?>>“如果你不想让他们看到彼此的电子邮件地址,请使用密件抄送类”-哦,我忘了密件抄送。我试试看。谢谢。在很多情况下,你会希望通过多封单独的电子邮件将同一文件发送给多个人。我想向所有员工发送带有1个或多个额外附件的个人工资单。我不想为每封发送的电子邮件的每个附件点击磁盘,所以我将它们读入内存。快速连续发送数千封电子邮件。>>“如果你不想让他们看到彼此的电子邮件地址,请使用密件抄送类”-哦,我忘了密件抄送。我试试看。谢谢。在很多情况下,你会希望通过多封单独的电子邮件将同一文件发送给多个人。我想向所有员工发送带有1个或多个额外附件的个人工资单。我不想为每封发送的电子邮件的每个附件点击磁盘,所以我将它们读入内存。快速连续发送数千封电子邮件。