system.net.mail работает слишком медленно - PullRequest
2 голосов
/ 12 марта 2011

Я использую system.net.mail для отправки электронной почты, как показано ниже, но это слишком медленно. отправка занимает около минуты, что не так с моим кодом. Призываю код ниже в backgroundworker_dowork.

[править]: есть ли более быстрая альтернатива, может быть, бесплатный или открытый исходный код

' send the email '
Dim smtp As SmtpClient = New SmtpClient()
Dim mail As New MailMessage()
Dim i As Long = 0

' SMTP settings  '
With smtp
    .Host = Trim$(sSMTP)
    .Port = Trim$(iPort)
    .UseDefaultCredentials = False
    .Credentials = New System.Net.NetworkCredential(sUserID, sPword)
    .EnableSsl = bSSL
End With

' create the mail '
With mail
    If sAttachment <> vbNullString Then
        .Attachments.Add(New Net.Mail.Attachment(sAttachment))
    End If
    .From = New MailAddress(sFromEmail, sFromName)
    .ReplyTo = New MailAddress(sReplyTo)
    .Subject = sSubject
    .IsBodyHtml = True
    .Body = sMessage
End With

For i = 0 To lstRecipients.Count - 1
    mail.To.Add(lstRecipients(i))
    Debug.Print(lstRecipients(i))
    Try
        smtp.Send(mail)
        lSent += 1
        bwrkMain.ReportProgress(CInt(100 * (i + 1) / iTotalRecipients))
        SetStatus("Sent:" & lstRecipients(i))
    Catch ex As Exception
        bwrkMain.ReportProgress(CInt(100 * (i + 1) / iTotalRecipients))
        SetStatus("Not Sent:" & lstRecipients(i))
    End Try
    mail.To.Clear()
Next

Ответы [ 2 ]

4 голосов
/ 12 марта 2011

Оставьте это на SMTP-сервере для рассылки электронной почты получателям.

For i = 0 To lstRecipients.Count - 1
    mail.To.Add(lstRecipients(i))
Next
smtp.Send(mail)

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

1 голос
/ 12 марта 2011

Возможно, вы захотите переключиться в «режим захвата», когда почтовый клиент вместо этого удаляет сообщение (я) в локальном месте отправки SMTP IIS. Таким образом, вы отправляете почту асинхронно (сортировка), хотя вам придется установить и настроить компонент SMTP.

Ваш код мне подходит, задержка должна быть на сервере ретрансляции, который вы используете.

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