Проблемы с отправкой обратно на электронную почту с vb.net - PullRequest
1 голос
/ 17 июня 2011

У нас проблемы с отправкой писем обратно на один из наших веб-сайтов.Сайт построен с использованием .net framework 2.0.

Мы можем отправлять первое письмо без проблем при каждой попытке.Но чтобы отправить второе электронное письмо, вам нужно подождать около 20-30 минут.

Ниже приведен наш код, если это поможет диагностировать проблему.

Одна вещь, которую мы попробовали, - это изменение сервера электронной почты smtp.,Мы попробовали сторонний SMTP-сервер, но та же проблема осталась.Поэтому я думаю, что проблема не в SMTP-сервере, а в нашем .NET-коде.

Imports Microsoft.VisualBasic

Imports System.Net
Imports System.Net.Mail

Namespace websiteCode
    Public Class mailer
        Const mailTo As String = "receiver@test.com"
        Const mailFrom As String = "sender@test.com"
        Const smtpServer As String = "192.168.1.1"
        Const username As String = "user"
        Const password As String = "password"



        Public Function send(ByVal emailaddress As String, ByVal messagebody As String, ByVal subject As String) As Boolean
            'If checkdata(emailaddress, messagebody) Then
            Using mm As New MailMessage(mailFrom, mailTo)
                mm.To.Add(New MailAddress("receıver@test.com"))
                mm.Subject = subject
                mm.Body = messagebody
                mm.IsBodyHtml = True
                mm.ReplyTo = New MailAddress(emailaddress)
                Dim smtp As New SmtpClient
                smtp.Host = smtpServer
                smtp.UseDefaultCredentials = False
                smtp.Credentials = New NetworkCredential(username, password)



                Try
                    smtp.Send(mm)
                    Return True
                Catch ex As Exception
                    Return False
                End Try

            End Using
            Return True
        End Function




    End Class
End Namespace  

ОБНОВЛЕНИЕ-1: РЕШЕНИЕ

<%@ OutputCache CacheProfile="static" %>

Удаление вышеуказанногоКод из файла .aspx решил проблему.Теперь я могу отправлять электронные письма обратно без каких-либо проблем.
Я погуглил, чтобы посмотреть, не объясняет ли кто-нибудь, как эта директива конфликтует с отправкой электронной почты, но пока я не понимаю.
В любом случае, проблема решена.

<% @ OutputCache CacheProfile = "статический"%>

1 Ответ

0 голосов
/ 17 июня 2011

Я не уверен, является ли это причиной вашей ошибки, но вам определенно следует избавиться от объекта SmtpClient, как только вы закончите. Из документации:

У класса SmtpClient нет финализатора метод, поэтому приложение должно вызвать Распоряжаться явно освободить Ресурсы. Метод Dispose итерирует через все установленные соединения с SMTP-сервер, указанный в Хосте свойство и отправляет сообщение о выходе с последующим изящным окончанием ПТС подключение. Метод Dispose также освобождает неуправляемые ресурсы, используемые через гнездо и опционально избавляется из управляемых ресурсов.

РЕДАКТИРОВАТЬ: Для .NET Framework <4.0 на самом деле нет метода утилизации. Вы можете попробовать метод обхода, предложенный <a href="http://connect.microsoft.com/VisualStudio/feedback/details/337557/smtpclient-does-not-close-session-after-sending-message" rel="nofollow"> здесь . Другой предложенный обходной путь здесь . Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...