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
Asp.net smtp客户端`SendAsync()`方法 Protected Sub btnLocalSubmit\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnLocalSubmit。单击 Dim逻辑=新连接 logic.emailsToSend(User.Identity.Name、getURL、reportedBy) SendAsync() Response.Redirect(getRedirectionPath,False) 特例 响应。写入(例如消息) 最后 _con.Close() _con.Dispose() _sqlComm.Dispose() 结束尝试 端接头 子SendAsync() Dim_con作为新的SqlConnection(ConfigurationManager.ConnectionString(“CitizenJDBCConnectionString”).ConnectionString) Dim_sqlDataAdapter作为新的sqlDataAdapter(“从EmailSender中选择*,_con) Dim_表作为新System.Data.DataTable 尝试 _con.Open() _sqlDataAdapter.Fill(_表) _con.Close() 对于i As Integer=0到_table.Rows.Count-1 Dim AppPath作为字符串=Request.PhysicalApplicationPath Dim sr作为新的StreamReader(AppPath和“EmailTemplates/NewReport.txt”) 将消息变暗为新邮件消息() message.IsBodyHtml=True message.From=新邮件地址(“admin@xxxx.com") message.To.Add(新邮件地址(_table.Rows(i).Item(1))) message.Subject=“新用户注册!” message.Body=sr.ReadToEnd() 高级关闭() message.Body=message.Body.Replace(“,_table.Rows(i).项(3)) message.Body=message.Body.Replace(“,_table.Rows(i).项(2)) 作为新SmtpClient()的Dim客户端 client.Host=“smtp.xxxxx.com” 'smtp.gmail.com client.Port=25 client.UseDefaultCredentials=True client.Credentials=新系统.Net.NetworkCredential(“admin@xxxx.com", "123456") 'client.EnableSsl=True Dim userState As Object=消息 '连接异步发送完成时的事件 AddHandler client.SendCompleted,SmtpClient\u的地址已完成 SendAsync(消息,用户状态) 下一个 特例 响应。写入(例如消息) 结束尝试 End Sub“SendAsync 公共子SmtpClient_未完成(ByVal sender作为对象,ByVal e作为AsyncCompletedEventArgs) '获取原始MailMessage对象 作为MailMessage=CType的Dim消息(e.UserState,MailMessage) “写出主题 将主题设置为字符串=message.subject 如果e.取消,则 Console.WriteLine(“主题为[{0}]的邮件的发送已取消”。”,主题) 如果结束 如果不是(即错误为零),则 WriteLine(“发送邮件[{0}]时发生错误{1}”,主题,e.Error.ToString() 其他的 Console.WriteLine(“消息[{0}]已发送。”,主题) 如果结束 终端子系统SmtpClient\u未完成_Asp.net_Vb.net_Smtpclient - Fatal编程技术网

Asp.net smtp客户端`SendAsync()`方法 Protected Sub btnLocalSubmit\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnLocalSubmit。单击 Dim逻辑=新连接 logic.emailsToSend(User.Identity.Name、getURL、reportedBy) SendAsync() Response.Redirect(getRedirectionPath,False) 特例 响应。写入(例如消息) 最后 _con.Close() _con.Dispose() _sqlComm.Dispose() 结束尝试 端接头 子SendAsync() Dim_con作为新的SqlConnection(ConfigurationManager.ConnectionString(“CitizenJDBCConnectionString”).ConnectionString) Dim_sqlDataAdapter作为新的sqlDataAdapter(“从EmailSender中选择*,_con) Dim_表作为新System.Data.DataTable 尝试 _con.Open() _sqlDataAdapter.Fill(_表) _con.Close() 对于i As Integer=0到_table.Rows.Count-1 Dim AppPath作为字符串=Request.PhysicalApplicationPath Dim sr作为新的StreamReader(AppPath和“EmailTemplates/NewReport.txt”) 将消息变暗为新邮件消息() message.IsBodyHtml=True message.From=新邮件地址(“admin@xxxx.com") message.To.Add(新邮件地址(_table.Rows(i).Item(1))) message.Subject=“新用户注册!” message.Body=sr.ReadToEnd() 高级关闭() message.Body=message.Body.Replace(“,_table.Rows(i).项(3)) message.Body=message.Body.Replace(“,_table.Rows(i).项(2)) 作为新SmtpClient()的Dim客户端 client.Host=“smtp.xxxxx.com” 'smtp.gmail.com client.Port=25 client.UseDefaultCredentials=True client.Credentials=新系统.Net.NetworkCredential(“admin@xxxx.com", "123456") 'client.EnableSsl=True Dim userState As Object=消息 '连接异步发送完成时的事件 AddHandler client.SendCompleted,SmtpClient\u的地址已完成 SendAsync(消息,用户状态) 下一个 特例 响应。写入(例如消息) 结束尝试 End Sub“SendAsync 公共子SmtpClient_未完成(ByVal sender作为对象,ByVal e作为AsyncCompletedEventArgs) '获取原始MailMessage对象 作为MailMessage=CType的Dim消息(e.UserState,MailMessage) “写出主题 将主题设置为字符串=message.subject 如果e.取消,则 Console.WriteLine(“主题为[{0}]的邮件的发送已取消”。”,主题) 如果结束 如果不是(即错误为零),则 WriteLine(“发送邮件[{0}]时发生错误{1}”,主题,e.Error.ToString() 其他的 Console.WriteLine(“消息[{0}]已发送。”,主题) 如果结束 终端子系统SmtpClient\u未完成

Asp.net smtp客户端`SendAsync()`方法 Protected Sub btnLocalSubmit\u Click(ByVal sender作为对象,ByVal e作为System.EventArgs)处理btnLocalSubmit。单击 Dim逻辑=新连接 logic.emailsToSend(User.Identity.Name、getURL、reportedBy) SendAsync() Response.Redirect(getRedirectionPath,False) 特例 响应。写入(例如消息) 最后 _con.Close() _con.Dispose() _sqlComm.Dispose() 结束尝试 端接头 子SendAsync() Dim_con作为新的SqlConnection(ConfigurationManager.ConnectionString(“CitizenJDBCConnectionString”).ConnectionString) Dim_sqlDataAdapter作为新的sqlDataAdapter(“从EmailSender中选择*,_con) Dim_表作为新System.Data.DataTable 尝试 _con.Open() _sqlDataAdapter.Fill(_表) _con.Close() 对于i As Integer=0到_table.Rows.Count-1 Dim AppPath作为字符串=Request.PhysicalApplicationPath Dim sr作为新的StreamReader(AppPath和“EmailTemplates/NewReport.txt”) 将消息变暗为新邮件消息() message.IsBodyHtml=True message.From=新邮件地址(“admin@xxxx.com") message.To.Add(新邮件地址(_table.Rows(i).Item(1))) message.Subject=“新用户注册!” message.Body=sr.ReadToEnd() 高级关闭() message.Body=message.Body.Replace(“,_table.Rows(i).项(3)) message.Body=message.Body.Replace(“,_table.Rows(i).项(2)) 作为新SmtpClient()的Dim客户端 client.Host=“smtp.xxxxx.com” 'smtp.gmail.com client.Port=25 client.UseDefaultCredentials=True client.Credentials=新系统.Net.NetworkCredential(“admin@xxxx.com", "123456") 'client.EnableSsl=True Dim userState As Object=消息 '连接异步发送完成时的事件 AddHandler client.SendCompleted,SmtpClient\u的地址已完成 SendAsync(消息,用户状态) 下一个 特例 响应。写入(例如消息) 结束尝试 End Sub“SendAsync 公共子SmtpClient_未完成(ByVal sender作为对象,ByVal e作为AsyncCompletedEventArgs) '获取原始MailMessage对象 作为MailMessage=CType的Dim消息(e.UserState,MailMessage) “写出主题 将主题设置为字符串=message.subject 如果e.取消,则 Console.WriteLine(“主题为[{0}]的邮件的发送已取消”。”,主题) 如果结束 如果不是(即错误为零),则 WriteLine(“发送邮件[{0}]时发生错误{1}”,主题,e.Error.ToString() 其他的 Console.WriteLine(“消息[{0}]已发送。”,主题) 如果结束 终端子系统SmtpClient\u未完成,asp.net,vb.net,smtpclient,Asp.net,Vb.net,Smtpclient,我正在使用smtp客户端SendAsync()函数异步发送电子邮件…但此函数不起作用…为什么??我没有收到任何电子邮件。当我同步发送它时…我收到了电子邮件,这意味着我的设置是正确的…所以SendAsync()方法有什么问题吗???我一直都在这样做,在这么做了几年之后,我建议对您的问题采取(2)种解决方案: 将实际发送的电子邮件代码(System.Net)重构为WCF服务或单独的.dll(我更喜欢该服务) 继续从ASP.NET页面使用异步委托调用,但要以“启动并忘记”的方式进行,不要连接任何回调

我正在使用smtp客户端
SendAsync()
函数异步发送电子邮件…但此函数不起作用…为什么??我没有收到任何电子邮件。当我同步发送它时…我收到了电子邮件,这意味着我的设置是正确的…所以
SendAsync()
方法有什么问题吗???

我一直都在这样做,在这么做了几年之后,我建议对您的问题采取(2)种解决方案:

  • 将实际发送的电子邮件代码(System.Net)重构为WCF服务或单独的.dll(我更喜欢该服务)
  • 继续从ASP.NET页面使用异步委托调用,但要以“启动并忘记”的方式进行,不要连接任何回调
  • 你可能会说,你需要知道发送电子邮件是否出了问题。让发送电子邮件的WCF服务来处理这个问题。在服务中执行任何日志记录。毕竟,不管怎么说,你真正做的就是记录。如果您需要在电子邮件失败时对工作流更感兴趣,有一些方法可以标记您的ASP.NET,但我认为您会发现,一旦发送电子邮件的服务稳定,您将很少遇到问题

    事实上,多年来,我一直在使用ASP.NET提供的服务发送电子邮件,并且已经发送了成千上万封不同的电子邮件,并且从来没有遇到过这种fire and forget设计的任何问题


    最后,设置页面
    Async=True
    通过阻塞主线程直到所有异步进程完成,最终使页面整体同步运行。这会使页面加载速度非常慢,通常是不需要的。

    您是否尝试过同步发送并检查错误?看起来您正在正确使用
    SendAsync()
    (按照我的要求)。我想到了几件事:-你发了多少封电子邮件?可能远程主机正在拒绝/限制连接,因为连接速度太快。-将Visual Studio设置为断开所有异常(调试->异常),以查看是否在另一个线程上引发了
    SmtpException
    。-你从回拨电话里得到什么信息了吗?它应该包含一条错误消息(你的代码看起来像是直接来自MSDN的,所以应该是正确的),你应该附加到事件,看看是否有异常返回给你。到目前为止,我只发送了3封电子邮件…我无法调试,因为我在代理服务器后面(我的大学使用一个)因此,邮件不会被发送,因为无法使用smtp设置代理设置…因此我部署了项目并尝试发送邮件以进行检查。我尝试了Response.Write(例如message),但收到“发送邮件失败”
     Protected Sub btnLocalSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLocalSubmit.Click
    
                Dim logic = New connections
                logic.emailsToSend(User.Identity.Name, getURL, reportedBy)
                SendAsync()
                Response.Redirect(getRedirectionPath, False)
            Catch ex As Exception
                Response.Write(ex.Message)
            Finally
                _con.Close()
                _con.Dispose()
                _sqlComm.Dispose()
    
            End Try
        End Sub
    
        Sub SendAsync()
    
            Dim _con As New SqlConnection(ConfigurationManager.ConnectionStrings("CitizenJDBConnectionString").ConnectionString)
            Dim _sqlDataAdapter As New SqlDataAdapter("SELECT * FROM EmailSender", _con)
            Dim _table As New System.Data.DataTable
    
            Try
                _con.Open()
                _sqlDataAdapter.Fill(_table)
                _con.Close()
    
                For i As Integer = 0 To _table.Rows.Count - 1
    
    
                    Dim AppPath As String = Request.PhysicalApplicationPath
    
                    Dim sr As New StreamReader(AppPath & "EmailTemplates/NewReport.txt")
                    Dim message As New MailMessage()
    
                    message.IsBodyHtml = True
    
                    message.From = New MailAddress("admin@xxxx.com")
    
                    message.To.Add(New MailAddress(_table.Rows(i).Item(1)))
    
    
                    message.Subject = "New User registration !"
    
                    message.Body = sr.ReadToEnd()
    
                    sr.Close()
    
                    message.Body = message.Body.Replace("<%ReporterName%>", _table.Rows(i).Item(3))
    
                    message.Body = message.Body.Replace("<%ReportURL%>", _table.Rows(i).Item(2))
    
                    Dim client As New SmtpClient()
                    client.Host = "smtp.xxxxx.com"
                    'smtp.gmail.com
                    client.Port = 25
                    client.UseDefaultCredentials = True
                    client.Credentials = New System.Net.NetworkCredential("admin@xxxx.com", "123456")
                    'client.EnableSsl = True
                    Dim userState As Object = message
    
                    'wire up the event for when the Async send is completed
                    AddHandler client.SendCompleted, AddressOf SmtpClient_OnCompleted
    
                    client.SendAsync(message, userState)
    
                Next
    
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
    
    
        End Sub 'SendAsync
    
        Public Sub SmtpClient_OnCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
            'Get the Original MailMessage object
            Dim message As MailMessage = CType(e.UserState, MailMessage)
    
            'write out the subject
            Dim subject As String = message.Subject
    
            If e.Cancelled Then
                Console.WriteLine("Send canceled for mail with subject [{0}].", subject)
            End If
            If Not (e.Error Is Nothing) Then
                Console.WriteLine("Error {1} occurred when sending mail [{0}] ", subject, e.Error.ToString())
            Else
                Console.WriteLine("Message [{0}] sent.", subject)
            End If
        End Sub 'SmtpClient_OnCompleted