SmtpClient.Send
을 사용하여 전자 메일을 보내려고합니다 (Win7 OS, .NET 4.5 이상). 동일한 sendMail
코드가 두 개의 다른 응용 프로그램에서 재사용되고 있습니다 (App-1 및 App-2로 호출 할 수 있음). App-1은 Admin-1 프로파일로 실행되고 App-2는 Admin-2 프로파일로 실행됩니다. 두 프로파일 모두 administrator/highest
특권이 있습니다. App-1은 1900 시간에 이메일을 보내고 App-2는 0300 시간에 이메일을 보내야합니다. From
및 To
이메일 주소는 두 앱에서 동일합니다. fromPass
을 포함하여 fromEmail
및 toEmail
이 모두 유효합니다.SmtpClient.send "작업 시간 초과 오류"
문제 :
- 앱-1은 때로는 모든 시간이라도 제대로 이메일을 보내는 것 같다!
- 앱-2는 지금까지 시도 던져 "작업 시간 초과"오류 (심지어 여러 번 시도 후 5 분마다)
용액 보인다 :
인터넷을 통해- 트롤과 노력 무엇을 가능한 해결책은
587
에서 포트를 변경 465
에 제안되고 있었다 :이send
assum에 아주 잘- 수행하는 여러 시도를 작동하지 않습니다 인터넷 문제였습니다
내 AV/방화벽이 모든 포트를 차단하지 않는 것 같습니다. 인터넷 연결이 꽤 안정적입니다.
아무 것도 효과가없는 것 같습니다. 왜 작동하지 않습니까? 잘만되면 내가 간과 한 바보 같은 실수 다! sendMail
코드가 제공됩니다.이 코드를 사용하면 도움이 될 것입니다. 나는 응용 프로그램을-시작을 다시하는 경우, 이메일은 그것이 발생 이후의 실행을 위해 다음 처음 실행시 올바르게 전송되고 있음을 깨달았다는 "작업 시간 초과"오류 :
업데이트 (Utils.doProcessLog
내 프로세스 로거)
업데이트 -2 :sendEmail
함수를 호출하는 Email
버튼이있는 일반 Windows 양식 응용 프로그램을 만들었습니다. 버튼을 누를 때마다 응용 프로그램이 올바르게 작동합니다 (즉, 이메일을 보냅니다).
업데이트 -3 pdf 보고서 중 하나는 900KB이고 다른 하나는 1.72MB입니다. sendMail
은 1.72MB 인 pdf 보고서에서만 충돌하는 것으로 보입니다. 3MB 이상의 첨부 파일에 대해 알려진 버그가있는 것 같습니다. 1.72MB는 문제가되지 않지만 저에게는 적합하지 않습니다. 설치시 "이 핫픽스가 적용되지 않습니다."라는 메시지가 나타나면이 핫픽스 (http://support2.microsoft.com/kb/2183292)를 설치할 수 없습니다. 해당 Microsoft 핫픽스 링크에서 제안한 해결 방법을 시도했지만 여전히 오류가 발생합니다.
Imports System.Net.Mail
Imports System.Net
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
' SEND EMAIL
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function sendMail(ByVal Subject As String) As Boolean
Dim fl As String
Dim i As Integer
Dim good As Boolean
' for EMAILS
Const mailStrAddress = "[email protected]"
Const mailStrPass = "fromPass"
Const mailStrHost = "smtp.gmail.com"
Const mailToAdd = "[email protected]"
Const maxAttempt = 5
' Subject & Body
Dim st = "This is a report generated from " & ThisWorkbook.Name
Dim subj = ThisWorkbook.Name & ": " & Subject
If IsNothing(subj) Then
subj = "CAUTION: EMPTY STRING"
End If
Utils.doProcessLog("about to email reports")
good = False
For i = 0 To maxAttempt
'
Dim mail As New MailMessage
Dim smtp As New SmtpClient
'
Try
mail.From = New MailAddress(mailStrAddress) ' Email address
' The important part -- configuring the SMTP client
smtp.Port = 587 ' [1] You can try with 465 also, I always used 587 and got success
smtp.EnableSsl = True
smtp.DeliveryMethod = SmtpDeliveryMethod.Network ' [2] Added this
smtp.UseDefaultCredentials = False ' [3] Changed this
smtp.Credentials = New NetworkCredential(mailStrAddress, mailStrPass) ' password-here [4] Added this. Note, first parameter is NOT string.
smtp.Host = mailStrHost
smtp.Timeout = 100000 ' 100 seconds
' recipient address
mail.To.Add(New MailAddress(mailToAdd))
' Formatted mail body
mail.IsBodyHtml = True
mail.SubjectEncoding = System.Text.Encoding.UTF8
mail.BodyEncoding = System.Text.Encoding.UTF8
mail.Subject = subj
mail.Body = st
' Send
smtp.Send(mail)
'
Utils.doProcessLog("report emailed")
good = True
Catch ex As Exception
Utils.doProcessLog("unable to email report : " & ex.Message)
Utils.doProcessLog("waiting for 5 minutes before re-trying :" & CStr(i))
good = False
Utils.doWait(5 * 60 * 1000) ' = 5(min)*60(secs)*1000(ms)
Finally
'
mail.Dispose()
smtp.Dispose()
'
End Try
' exit if successful
If good Then
Exit For
End If
Next i
End Function
나는 또한 같은 문제가 발생했습니다. 나는 문제가 smtp 서버에 있다고 생각한다. 그것을 일으키는 코드는있을 것 같지 않습니다. – Hatjhie
@Hatjhie, "smtp 서버에 문제가 있습니까?"라는 의미는 무엇입니까? smtp.gmail.com에 문제가 있다는 뜻입니까? – user2979010
@Hatjhie, 당신도 똑같은 문제에 직면 해 있다고 말씀하셨습니다. 이 문제를 극복하기 위해 완전히 다른 것을 사용하고 있습니까? – user2979010