我有一個應用程序通過SMTP發送電子郵件,但它比罪惡更慢。兩名收件人可能需要20秒以上。我相信問題是程序邏輯。使用SMTP優化發送消息
該程序打開一個帶有電子郵件地址和顯示名稱的csv,然後使用for循環向每個收件人發送消息。
問題是,我擔心它每次發送給列表中的下一個人時都會重新建立SMTP連接。
我的問題是,如何設置SMTP連接併爲每個用戶重新使用該連接? (除非這不是爲什麼它的速度慢,有人能告訴我,爲什麼它的運行這麼慢)
void DoWork(object sender, DoWorkEventArgs e)
{
// Get User List
List<string[]> mycsv = csvRead();
int total = mycsv.Count;
// Send Message to each user
for (int x = 0; x < total; x++)
{
//Actual send message
sendMail(mycsv[x][0], mycsv[x][1]);
}
}
private void sendMail(string toEmail, string toName)
{
string email = Properties.SMTP.Default.Email;
string name = Properties.SMTP.Default.DisplayName;
MailMessage mail = new MailMessage();
mail.From = new MailAddress(email, name);
//Recipient Address
mail.To.Add(new MailAddress(toEmail, toName));
//Formatted mail
mail.IsBodyHtml = true;
// htmlMessage and Subject are global
mail.Body = htmlMessage;
mail.Subject = htmlSubject;
SmtpClient smtp = smtpDetails();
smtp.Send(mail);
}
private SmtpClient smtpDetails()
{
int port = Convert.ToInt32(Properties.SMTP.Default.ServerPort);
string email = Properties.SMTP.Default.Email;
string username = Properties.SMTP.Default.Username;
string password = Properties.SMTP.Default.Password;
string host = Properties.SMTP.Default.ServerAdd;
SmtpClient smtp = new SmtpClient();
smtp.Port = port;
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential(username, password);
smtp.Host = host;
return smtp;
}
VS:2013 - 4.5 .NET - WPF應用程序