我这里有一个使用SMTP的工作代码,我使用gmail作为我的服务器,但我想加快发送速度。我已经尝试将Timeout设置为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
无论如何我还能加快速度,还是让我无法控制?提前谢谢。
答案 0 :(得分:1)
您的电子邮件发送课程似乎是正确的。它将持续更少或更长的时间,具体取决于您的网络连接或要添加到MailMessage
类的附件的大小。
顺便说一下,你要分配:
SMTPServer.Timeout = 500
发送电子邮件后:
SMTPServer.Send(Email)
所以它没有被分配到班级,也没有考虑到。
TimeOut
在您的客户端失去网络连接(因此它不等待永久发送)或服务器电子邮件无法运行时很有用(这种情况是gmail,不太可能发生)。
TimeOut与发送速度无关,只有当涉及连接或服务器的内容出错时才会加速Throw Exception
。
答案 1 :(得分: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)