2016-10-10 19 views
1

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; 
} 
+0

関連コードを投稿してください。 –

+0

最初のメールからMailAttachmentを破棄しないでください。 – JDandChips

+0

にコード –

答えて

4

MailMessage(アチチャも処分する必要があります)を処分する必要があります。

簡単

using (var mail = new MailMessage()) { 
//yourcode 
} 

あなたはthis

その他のソリューションを見てみて修正

もう一つの方法は、新規に追加し、ちょうどループの前に、あなたはMailMessageを作成することができループ内のアドレスはToで、ループの後に送信されます。

1つまたは複数のメッセージを送信するかどうかによって異なります。

+0

を追加しました。ありがとうございました。しかし、この修正は私には役に立ちません。System.IO.IOException:認証リモートパーティーがトランスポートストリームを閉じたために失敗しました。」というエラーメッセージが表示されます。最初のメッセージがまだ送信されています –

+0

さて、あなたの質問に編集したコードを表示してください。 –

関連する問題