Ho sviluppato un'applicazione che invia principalmente messaggi di posta elettronica utilizza SMTP. L'invio di messaggi uno per uno va bene, tuttavia sto cercando di velocizzare il processo. Ho creato più istanze di SmtpClient
e messaggi per evitare conflitti tra loro. A causa delle istanze separate, ho assunto che l'esecuzione di .Send()
su più thread funzionasse correttamente. Tuttavia, qualcosa con il mio codice Thread
non funziona, perché non posso inviare neanche una email su un thread usando questo codice. Ricevo semplicemente una vaga eccezione "Failure sending mail"
. Inserirò il codice che funziona e lo Thread
non funziona. Qualcuno potrebbe condividere ciò che ritengono possa essere la causa?C# Invio SMTP tramite System.Threading
Nota io non sono attualmente alla ricerca di utilizzare i più recenti async
capacità ma invece sfruttando Thread
Dichiarazione di lavoro e metodo di chiamata:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
SMTP.Send(message);
}
non funziona dichiarazione Discussione e metodo di chiamata:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
Thread T1 = new Thread(delegate() { SMTP.Send(message); });
T1.Start();
}
Avete 'nuova Thread' all'interno di un blocco di' 'using' per message'? In questo modo, è probabile che il messaggio venga eliminato prima che il nuovo thread lo invii. –
Avvolgere la dichiarazione di lavoro e il metodo di lavoro in un altro metodo e quindi utilizzare tale metodo nella discussione – nsconnector
no. Puoi approfondire un po 'di più per favore? Sono anche incerto su cosa intendi per essere smaltito prima che il nuovo thread lo invii, per motivi di prova sto usando solo un thread. Potrei anche essere qui, spero che tu possa stare con me. – scniro