我有一個VB.NET程序每天向5個外部收件人發送4個附件。這些附件每天都有相同的大小,從149KB到161KB不等。VB.NET程序生成錯誤的電子郵件大小限制錯誤
有些日子,消息會從我們這個消息交換服務器退回:
返回「遠程服務器550 5.2.3 RESOLVER.RST.SendSizeLimit.Org; 消息太大,這個組織
消息的大小應該是大約160 * 4 = 640KB,但反衝告訴我們:
此消息,因爲它沒有被交付給任何人太大了。 限制是24 MB。該消息是35 MB。
我們不確定,但它似乎是35 MB的數字乘以所有5個收件人的附件的總大小。
其他日子它發送罰款。我們沒有發現什麼時候失敗的模式 - 通常是每週5次1-3天。另外,如果我使用blat和批處理文件將相同的附件發送給相同的收件人,則它們始終會正確發送。
我們以前在另一臺服務器上運行此程序(現已停用),並且此消息永遠不會失敗。似乎有一些特定於此服務器的內容會干擾電子郵件的發送方式,但我們不確定在哪裏尋找。它可能是.NET程序和Blat相互作用嗎?我不相信舊服務器已經安裝了。
我個人不能訪問所有交換日誌,但我有一個同事檢查他們,他們說他們找不到任何不尋常的東西。
編輯代碼:
Public Sub SendEmail()
Dim objMail As New SmtpClient(ConfigurationManager.AppSettings("MailServer").ToString, 25)
Dim objMess As MailMessage
Dim strBody As String
Dim JHPath As String : JHPath = ConfigurationManager.AppSettings("JHFiles").ToString
Try
'create a new message object
objMess = New Net.Mail.MailMessage()
objMail.Timeout = 90000 '90 seconds
'add sender to the message object
objMess.From = New MailAddress(ConfigurationManager.AppSettings("MailFromAddr"), "<redacted>")
'add recipients
For Each addr As String In ConfigurationManager.AppSettings("MailToAddr").Split(";")
objMess.To.Add(addr)
Next
'the body text of the email
strBody = ""
'add subject to the message object
objMess.Subject = "<redacted> " & labelsDate.ToString("MM/dd/yyyy") & " - " & <redacted>
'add body to the message object
objMess.Body = strBody
Dim filAge As Integer
'attach the 4 files necessary for the <redacted> - only today's
For Each fil As String In IO.Directory.GetFiles(JHPath)
filAge = (Today() - IO.File.GetLastWriteTime(fil)).Days
If filAge < 1 And Not (fil Like "*Thumbs.db") Then 'add today's files only, in case archiving did not happen
objMess.Attachments.Add(New Attachment(fil))
End If
Next
'send the email
Console.WriteLine(Now() & " -- Sending email..... " & vbCrLf)
writer.WriteLine(Now() & vbTab & "Sending email..... " & vbCrLf)
'try sending the message
Try
objMail.Send(objMess)
writer.WriteLine(Now() & vbTab & "Email sent and cleaned up. " & vbCrLf)
Catch ex As Exception
Dim mess As String : mess = Now() & " -- Failure sending email to <redacted>!"
Console.WriteLine(mess)
writer.WriteLine(mess)
Finally
'get rid of the message object, cleanup
objMess.Dispose()
End Try
Catch ex As Exception
Console.WriteLine(Now() & " -- Other Error Emailing to <redacted>: " & ex.Message)
writer.WriteLine(Now() & vbTab & "Exception while Emailing <redacted>: " & ex.Message & vbCrLf)
SendEmails("Error emailing <redacted>." & ex.Message & vbCrLf & ex.StackTrace)
End Try
End Sub
沒有顯示你的代碼,我們可以做的事情並不多(記住,在你發佈任何密碼和個人信息之前,將代碼去掉)。 –