0

複数の人に単一のメールを送信しています。そのため、添付ファイルを使用して for ループでメールを送信していますが、2 番目のループでファイル ロック エラーが発生しています。以下は私のコードです。

public string SendMail(string toList, string from, string ccList,
string subject, string body)
{

    System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;



    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(TextBox1.Text, TextBox2.Text);

    if (FileUpload2.HasFile)
    {
        // File Upload path
        String FileName = FileUpload2.PostedFile.FileName;


        FileUpload2.PostedFile.SaveAs(Server.MapPath(FileName));


        //Getting Attachment file
        Attachment mailAttachment = new Attachment(Server.MapPath(FileName));
        //Attaching uploaded file
        message.Attachments.Add(mailAttachment);
    }   

        smtpClient.Send(message);
        LblMessage.ForeColor = System.Drawing.Color.Green;
        LblMessage.Text = "Mail Sent Successfully.";
    }
    catch (Exception ex)
    {
        LblMessage.Text = ex.Message;
        LblMessage.ForeColor = System.Drawing.Color.Red;

    }
    return msg;
}

この関数を呼び出すループ内

for (int i = 0; i < LbEmails.Items.Count; i++)
            {

                SendMail(LbEmails.Items[i].ToString(), TextBox1.Text, "", TbSubject.Text, TbBody.Text);

            }
4

1 に答える 1

0

すべてのメールで同じように見えますが、送信するメールごとにアップロードされたファイルを 1 回保存しているようです。この行をSendMail()メソッドから引き出して、ループの前に呼び出します。

FileUpload2.PostedFile.SaveAs(Server.MapPath(FileName));
于 2013-10-25T17:15:50.487 に答える