C# 发送包含同一附件的多封电子邮件

C# 发送包含同一附件的多封电子邮件,c#,email,C#,Email,我想使用for循环发送多封包含相同pdf文档的电子邮件, 现在,第一个电子邮件地址始终接收电子邮件,但随后下列电子邮件地址出现错误`进程无法访问文件'file\path\file.pdf',因为另一个进程正在使用它 foreach (GridViewRow Row in GridView1.Rows) { MailMessage mail = new MailMessage();

我想使用for循环发送多封包含相同pdf文档的电子邮件, 现在,第一个电子邮件地址始终接收电子邮件,但随后下列电子邮件地址出现错误`进程无法访问文件'file\path\file.pdf',因为另一个进程正在使用它

 foreach (GridViewRow Row in GridView1.Rows)
            {
                           MailMessage mail = new MailMessage();
                                SmtpClient SmtpServer = new SmtpClient(smtpServer);
                            mail.From = new MailAddress(Sender);
                            mail.To.Add(new MailAddress(to));
                            mail.Subject = Subject;
                            mail.Body = TextBox2.Text;

                            Attachment attachment;
                            attachment = new Attachment(Server.MapPath("~/temp/file.pdf"));
                            mail.Attachments.Add(attachment);
                            SmtpServer.Port = SmtpPort;
                            SmtpServer.Credentials = new System.Net.NetworkCredential(Sender, Password);
                            SmtpServer.EnableSsl = true;
                            try
                            {
                                SmtpServer.Send(mail);
                                sent++;
                            }
                            catch (Exception ex)
                            {
                                Label1.Visible = true;
                                Label1.Text = ex.Message.ToString();
                                if (ex.InnerException != null)
                                {
                                    Label1.Text = ex.InnerException.ToString();
                                    Label1.Visible = true;
                                }
                            }
                            Label2.Text = "Sent: " + sent + "Failed: " + failed + " Without Email:" + NoEmail;
                            Label2.Visible = true;
}
你需要处理你的邮件,这也会处理附件

容易解决

你可以看看

其他解决方案

另一种方法是在循环之前创建邮件消息,将新邮件添加到循环中的地址,然后在循环之后发送

取决于您是否要发送一条或多条邮件。

您需要处理邮件,这也会处理附件

容易解决

你可以看看

其他解决方案

另一种方法是在循环之前创建邮件消息,将新邮件添加到循环中的地址,然后在循环之后发送


取决于您是否要发送一封或多封邮件。

请发布相关代码。听起来您不是在处理文件,就是在处理第一封邮件中的邮件附件。请添加代码发布相关代码。听起来您不是在处理文件,就是在处理第一封邮件中的邮件附件添加了代码谢谢大家,但修复程序对我没有帮助,我现在收到一个System.IO.IOException:身份验证失败,因为远程方已关闭传输流。错误,但第一个仍然发送Hanks伙计,但修复程序对我没有帮助,我现在正在接收System.IO.IOException:身份验证失败,因为远程方已关闭传输流。错误,但第一个仍然发送
using (var mail = new MailMessage()) {
 //yourcode
}