现在用system.net.mail如下图所示,但其速度太慢,无法发送电子邮件。大约需要一分钟送,什么毛病我code。我打电话低于backgroundworker_dowork的code。
:有没有更快的替代方案,可能免费或开源$ C $ C
发送电子邮件
昏暗的SMTP作为SmtpClient =新SmtpClient()
昏暗的邮件作为新MailMessage()
昏暗我只要= 0
SMTP设置
通过SMTP
。主持人=修剪$(ssmtp中)
.Port =修剪$(I端口)
.UseDefaultCredentials =假
.Credentials =新System.Net.NetworkCredential(sUserID,sPword)
.EnableSsl = BSSL
结束与
创建邮件
随着邮件
如果sAttachment<> vbNullString然后
.Attachments.Add(新Net.Mail.Attachment(sAttachment))
结束如果
。从=新MailAddress(sFromEmail,sFromName)
.ReplyTo =新MailAddress(sReplyTo)
.Subject = sSubject
.IsBodyHtml = TRUE
。体= sMessage
结束与
对于i = 0到lstRecipients.Count - 1
mail.To.Add(lstRecipients(I))
Debug.Print(lstRecipients(I))
尝试
smtp.Send(邮件)
lSent + = 1
bwrkMain.ReportProgress(CINT(100 *第(i + 1)/ iTotalRecipients))
SetStatus(发送:与功放; lstRecipients(I))
抓住EX为例外
bwrkMain.ReportProgress(CINT(100 *第(i + 1)/ iTotalRecipients))
SetStatus(未发送:&放大器; lstRecipients(I))
结束尝试
mail.To.Clear()
下一个
解决方案
把它留到SMTP服务器的电子邮件发给收件人。
对于i = 0到lstRecipients.Count - 1
mail.To.Add(lstRecipients(I))
下一个
smtp.Send(邮件)
使用密件抄送属性,如果你不想让收件人看到其他的名字。
am using system.net.mail to send email as shown below, but its too slow. it takes about a minute to send, whats wrong with my code. Am calling the code below in backgroundworker_dowork.
[edit]: is there a faster alternative, maybe free or open source code
' 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
解决方案
Leave it up to the SMTP server to distribute the email to the recipients.
For i = 0 To lstRecipients.Count - 1
mail.To.Add(lstRecipients(i))
Next
smtp.Send(mail)
Use the Bcc property if you don't want the recipient to see the other names.