Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SmptClient SendAsync阻止应用程序,不异步发送_C#_Asp.net_Smtpclient_Sendasync - Fatal编程技术网

C# SmptClient SendAsync阻止应用程序,不异步发送

C# SmptClient SendAsync阻止应用程序,不异步发送,c#,asp.net,smtpclient,sendasync,C#,Asp.net,Smtpclient,Sendasync,我使用开发服务器和SmtpClient.SendAsync发送邮件,但它仍然会阻止页面上的所有其他操作,直到发送完成。我搜索了很多,似乎看不出问题出在哪里 protected void SendMailButton_Click(object sender, EventArgs e) { SendMailTemplate("verify@site.com", "your-email@gmail.com", "Your company Listing is Approved

我使用开发服务器和SmtpClient.SendAsync发送邮件,但它仍然会阻止页面上的所有其他操作,直到发送完成。我搜索了很多,似乎看不出问题出在哪里

    protected void SendMailButton_Click(object sender, EventArgs e) {

        SendMailTemplate("verify@site.com", "your-email@gmail.com", "Your company Listing is Approved !", "CompanyApproved.txt", new string[] { "Send Mail company" });           
    }

    public void SendMailTemplate(string From, string To, string Subject, string EmailTemplate, string[] Params) {

        var message = new MailMessage(From, To);
        message.IsBodyHtml = true;
        message.Subject = Subject;

        var sr = new StreamReader(HttpRuntime.AppDomainAppPath + "/Resources/EmailTemplates/" + EmailTemplate);         //Cannot use Server.MapPath here
        message.Body = sr.ReadToEnd(); sr.Close();
        for (int i = 0; i < Params.Length; i++) {
            message.Body = message.Body.Replace("<%Param" + (i + 1) + "%>", Params[i]);
        }

        var smtpClient = new SmtpClient("mail.site.com", 25);

        smtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
        smtpClient.SendCompleted += (s, e) => { smtpClient.Dispose(); message.Dispose(); };
        smtpClient.SendAsync(message, null);

    }
protectedvoid SendMailButton\u单击(对象发送者,事件参数e){
SendMailTemplate(“verify@site.com你的-email@gmail.com“,“您的公司上市已批准!”,“CompanyApproved.txt”,新字符串[]{“发送邮件公司”});
}
public void SendMailTemplate(字符串From、字符串To、字符串主题、字符串EmailTemplate、字符串[]参数){
var消息=新邮件消息(从,到);
message.IsBodyHtml=true;
message.Subject=Subject;
var sr=new StreamReader(HttpRuntime.AppDomainAppPath+“/Resources/EmailTemplates/“+EmailTemplate);//无法在此处使用Server.MapPath
message.Body=sr.ReadToEnd();sr.Close();
对于(int i=0;i{smtpClient.Dispose();message.Dispose();};
smtpClient.SendAsync(消息,空);
}

当它无法与smtp建立连接时,我收到了这个消息。在真正的异步操作开始之前,它会执行一些其他操作,可能是连接到smtp。完成后,异步操作将在内部执行。尝试将它(为了测试)放到backgroundworker中,看看该操作是否会继续。谢谢。。他那样做了。。正在使用Thread.Queue。。