0

SMTP を使用した作業コードがここにあります。サーバーとして gmail を使用しましたが、送信を高速化したいと考えています。タイムアウトを 500 に設定しようとしましたが、それでも遅いです。

ここに私の完全なコードがあります:

Function SendEmail(ByVal Recipients As List(Of String), _
                  ByVal FromAddress As String, _
                  ByVal Subject As String, _
                  ByVal Body As String, _
                  ByVal UserName As String, _
                  ByVal Password As String, _
                  Optional ByVal Server As String = "smtp.gmail.com", _
                  Optional ByVal Port As Integer = 587, _
                  Optional ByVal Attachments As List(Of String) = Nothing) As String


    Dim Email As New MailMessage()
    Try
        Dim SMTPServer As New SmtpClient
        For Each Attachment As String In Attachments
            Email.Attachments.Add(New Attachment(Attachment))
        Next
        Email.From = New MailAddress(FromAddress)
        For Each Recipient As String In Recipients
            Email.To.Add(Recipient)
        Next
        Email.Subject = Subject
        Email.Body = Body
        SMTPServer.Host = Server
        SMTPServer.Port = Port
        SMTPServer.Credentials = New System.Net.NetworkCredential(UserName, Password)
        SMTPServer.EnableSsl = True
        SMTPServer.Send(Email)
        SMTPServer.Timeout = 500
        Email.Dispose()

        Return "Email to " & Recipients(0) & " from " & FromAddress & " was sent."
    Catch ex As SmtpException
        Email.Dispose()
        Return "Sending Email Failed. Smtp Error."
    Catch ex As ArgumentOutOfRangeException
        Email.Dispose()
        Return "Sending Email Failed. Check Port Number."
    Catch Ex As InvalidOperationException
        Email.Dispose()
        Return "Sending Email Failed. Check Port Number."
    End Try
End Function


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim Recipients As New List(Of String)
    Recipients.Add("put recipient email here")
    Dim FromEmailAddress As String = Recipients(0)
    Dim Subject As String = "subject goes here"
    Dim Body As String = "Email body goes here"
    Dim UserName As String = "put username here"
    Dim Password As String = "put password here"
    Dim Port As Integer = 587
    Dim Server As String = "smtp.gmail.com"
    Dim Attachments As New List(Of String)
    MsgBox(SendEmail(Recipients, FromEmailAddress, Subject, Body, UserName, Password, Server, Port, Attachments))

End Sub

これをスピードアップする方法はありますか、それとも私のコントロール外ですか? 前もって感謝します。

4

2 に答える 2

1

あなたのメール送信クラスは正しいようです。ネットワーク接続またはクラスに追加する添付ファイルのサイズに応じて、持続時間が短くなったり長くなったりしますMailMessage

ところで、あなたは次のものを割り当てています:

SMTPServer.Timeout = 500

メールを送信した後:

SMTPServer.Send(Email)

そのため、クラスに割り当てられておらず、考慮されていません。

TimeOutクライアントがネットワーク接続を失った場合(そのため、永遠に送信を待機しない)、またはサーバーの電子メールが機能していない場合(この場合はgmailであり、発生する可能性は低い)に役立ちます.

タイムアウトは送信速度とは関係ありませんThrow Exception。接続またはサーバーに関連する何かが間違っている場合にのみ加速します。

于 2013-10-22T07:35:39.833 に答える