2013-10-22 58 views
0

我在这里有一个使用SMTP的工作代码,我使用Gmail作为我的服务器,但我想加快发送速度。我曾尝试将Timeout设置为500,但仍然很慢。加快SMTP发送速度

这里是我的完整代码:

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 

反正对我来说,加快这或这是在我的掌握?提前致谢。

回答

1

您的电子邮件发送类似乎是正确的。根据您的网络连接或您添加到MailMessage类中的附件的大小,它将持续更少或更多的时间。您发送电子邮件后

SMTPServer.Timeout = 500 

顺便说一句,你是分配

SMTPServer.Send(Email) 

所以它没有被分配到类,并在考虑到不采取。

TimeOut当你的客户端失去网络连接(所以它不会等到永远发送)或服务器电子邮件不可用(这种情况是gmail,不太可能发生)时很有用。

TimeOut与发送速度无关,只会在涉及连接或服务器的某些内容出错时加速Throw Exception

+0

感谢您的信息。我觉得没有什么我可以做的发送速度然后。现在是时候进入另一个实验:D –

+0

电子邮件类很简单,这是正确的:)。转到另一个实验;) –

0
smtp.Host = "smtp.gmail.com"; //host name 
    smtp.Port = 587; //port number 
    smtp.EnableSsl = true; //whether your smtp server requires SSL 
    smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword); 
    smtp.Timeout = 20000; 

去通过Send Mail (SMTP) using ASP.NET and C# (smtp.Send() method)的细节