[英]SMTP Email Works until triggering a 404 error in the middle of sending Mail
我有一個電子郵件收件人 imma 數據庫表,並使用 gridview 表中的“全選”按鈕作為觸發器來調用郵件功能。 我的迭代函數調用此處重復描述的“executeApprove”:
For Each row In gridApproval.Rows
chkApprove = CType(gridApproval.Rows(i).FindControl("chkApprove"), CheckBox)
If chkApprove.Checked Then
executeApprove(Right(lblTglProses.Text, 8), Left(gridApproval.Rows(i).Cells.Item(2).Text, 3), Session("role"), "APPROVE", Session("userID"), False)
End If
i = i + 1
Next
Catch ex As Exception
ScriptManager.RegisterStartupScript(Me.UpdatePanel1, Me.GetType, "Message", "alert('Error : ' + '" & Replace(Replace(ex.Message.ToString, "'", ""), vbNewLine, "") & "');", True)
End Try
gridApproval.DataBind()
End If
在我的 executeApprove 上:
Protected Sub executeApprove(ByVal tanggal As String, ByVal branch As String, ByVal role As String, ByVal status As String, ByVal user As String, ByVal isDone As Boolean)
Dim Title As String
Dim Body As String
Try
conn = run.connect(conn, "open")
cmd = New SqlCommand("usp_status_trial", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandTimeout = 0
cmd.Parameters.Add("@date", SqlDbType.VarChar).Value = tanggal
cmd.Parameters.Add("@branch", SqlDbType.VarChar).Value = branch
cmd.Parameters.Add("@role", SqlDbType.VarChar).Value = role
cmd.Parameters.Add("@status", SqlDbType.VarChar).Value = status
cmd.Parameters.Add("@user", SqlDbType.VarChar).Value = user
reader = cmd.ExecuteReader
If reader.HasRows Then
reader.Read()
result = reader.Item(0).ToString
ScriptManager.RegisterStartupScript(Me.UpdatePanel1, Me.GetType, "Message", "alert('" & result & "');", True)
If result = "APPROVED" Then
If Session("role") = "APP" Then
Title = "Title Email"
Body = "Body Email"
sendMultipleMail(Title, Body)
End If
ElseIf result = "UNAPPROVED" Then
If Session("role") = "APP" Then
Title = "Title Email"
Body = "Body Email"
sendMultipleMail(Title, Body)
End If
End If
If isDone Then
Response.Redirect("~/dashboard.aspx?id=" + Request.QueryString("id"), True)
End If
End If
conn = run.connect(conn, "close")
Catch ex As Exception
ScriptManager.RegisterStartupScript(Me.UpdatePanel1, Me.GetType, "Message", "alert('Error : ' + '" & Replace(Replace(ex.Message.ToString, "'", ""), vbNewLine, "") & "');", True)
End Try
End Sub
和我的 sendMultipleMail :
Public Sub sendMultipleMail(ByVal subject As String, ByVal body As String)
Dim dsMail As New DataSet
Dim strQuery As New SqlCommand
Dim SendFrom As MailAddress
Dim SendTo As MailAddress
Dim emailClient As SmtpClient
Dim SMTP As String
Dim mailFrom As String
SMTP = getAppParam("SMTPserver") 'got the SMTP
mailFrom = getMailSetting("mailFrom")
strQuery.CommandText = "%'Query for select all the receiver'%"
dsMail = RunQuery(strQuery)
For Each rowMail In dsMail.Tables(0).Rows
SendFrom = New MailAddress(mailFrom)
SendTo = New MailAddress(rowMail("mail_address").ToString())
Dim MyMessage As MailMessage = New MailMessage(SendFrom, SendTo)
MyMessage.Subject = subject
MyMessage.Body = body
emailClient = New SmtpClient(SMTP)
emailClient.Send(MyMessage)
Next
End Sub
一切正常,直到發送大量電子郵件的幾分鍾(在重復調用 func 的中間),IIS 返回一個奇怪的 404 響應。
POST http://localhost/myApp/approval?type=all&id=userid 500(內部服務器錯誤)——MicrosoftAjax.js:6
未捕獲的類型錯誤:無法在 Sys.WebForms.PageRequestManager._onFormSubmitCompleted (MicrosoftAjaxWebForms.js:6:25554) 的 Sys.WebForms.PageRequestManager._createPageRequestManagerServerError (MicrosoftAjaxWebForms.js:6:11462) 處讀取未定義的屬性(讀取“PRM_ServerError”) . (MicrosoftAjax.js:6:307) 在 MicrosoftAjax.js:6:51370 在 Sys.Net.WebRequest.completed (MicrosoftAjax.js:6:89678) 在 XMLHttpRequest._onReadyStateChange (MicrosoftAjax.js:6:84277)
我犯了一些錯誤嗎?
謝謝你的回答。 出現錯誤 404 只是因為 SMTP 需要很長時間才能將整個電子郵件發送到接收者。 所以我一直在用
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="3000000000" />
</requestFiltering>
</security>
在 .config 文件中增加超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.