Domanda

Ecco il mio codice

for(int i = 0; i < number ; i++)
{
MailAddress to = new MailAddress(iMail.to);
MailAddress from = new MailAddress(iMail.from, iMail.displayName);
string body = iMail.body;
string subject = iMail.sub;
oMail = new MailMessage(from, to);
oMail.Subject = subject;
oMail.Body = body;
oMail.IsBodyHtml = true;
oMail.Priority = MailPriority.Normal;
oMail.Sender = from;
s = new SmtpClient(smtpServer);
if (s != null)
{
 s.Send(oMail);
}
oMail.Dispose();
s = null;
}

questo loop invia oltre 60.000 e-mail. ma il mio problema io sono sempre "fallimento invio di posta elettronica" in alcune delle e-mail a volte 5000 e un po 'di tempo di meno allora che resto di loro viene consegnato. e devo controllare tutti coloro errore out-mail ha l'indirizzo e-mail valido. non so qual è il problema. Ho davvero bisogno di aiuto in questo.

Modifica: Questa è la mia eccezione Trace

  

Errore - Il mancato invio della posta .; Interno   Ex - System.IO.IOException: impossibile   leggere i dati dal trasporto   Collegamento: net_io_connectionclosed.   a   System.Net.Mail.SmtpReplyReaderFactory.ProcessRead (Byte []   tampone, offset Int32, Int32 leggere,   Booleano readLine) a   System.Net.Mail.SmtpReplyReaderFactory.ReadLines (SmtpReplyReader   chiamante, oneline booleano) a   System.Net.Mail.SmtpReplyReaderFactory.ReadLine (SmtpReplyReader   chiamante) a   System.Net.Mail.CheckCommand.Send (SmtpConnection   conn, String & risposta) a   System.Net.Mail.MailCommand.Send (SmtpConnection   conn, Byte [] comando, String da) a   System.Net.Mail.SmtpTransport.SendMail (MailAddress   mittente, MailAddressCollection   destinatari, String deliveryNotify,   SmtpFailedRecipientException &   eccezione)

È stato utile?

Soluzione 3

A quanto pare questo problema ottenuto risolto semplicemente aumentando le dimensioni della coda sul mio terzo assistente partito smtp. ma la risposta da Nip suona come è troppo abbastanza utile

Altri suggerimenti

Bene, il "fallimento l'invio di e-mail" spera, dovrebbe avere un po 'più in dettaglio. Ma ci sono alcune cose che potrebbero causare questo.

  1. Restrizioni l'indirizzo "Da". Se si utilizza diverso dagli indirizzi, alcuni potrebbero essere bloccati dal servizio SMTP di essere in grado di inviare.
  2. Prevenzione delle inondazioni sul servizio SMTP potrebbe fermare i messaggi di posta elettronica di uscire.

A prescindere se si tratta di uno di questi o un altro errore, si vuole guardare l'eccezione e l'eccezione interna per ottenere un po 'più in dettaglio.

ho sperimentato lo stesso problema durante l'invio di e-mail ad alta volume. L'impostazione della proprietà deliveryMethod per PickupDirectoryFromIis fissato per me. Inoltre, non creare una nuova ogni volta SmtpClient.

quale errore si ottiene è uno SmtpFailedrecipientException? in tal caso è possibile controllare la lista innerexceptions e visualizzare lo StatusCode per avere maggiori informazioni. sul link qui sotto ha alcune buone informazioni

MSDN

Modifica per le nuove informazioni

Thisis un problema a trovare il server SMTP da quello che posso vedere, anche se dici che succede solo su alcuni messaggi di posta elettronica. Si sta utilizzando più di un server smtp e se è così forse si può tratto il problema verso il basso per uno in particolare, se non può essere che la velocità / quantità di messaggi di posta elettronica si sta inviando sta causando il server SMTP qualche problema.

Per noi, tutto è andato bene, le email sono molto piccole e non molti di loro vengono inviati e sudently ha dato questo errore. Sembrava che una technicien installato ASTARO che impediva e-mail da inviare. e stavamo ottenendo questo errore quindi sì l'errore è un po 'criptico, ma spero che questo potrebbe aiutare gli altri.

Vedendo il ciclo per l'invio di e-mail e l'errore che hai fornito c'è solo una soluzione.
Dichiarare l'oggetto di posta fuori dal giro e assegnare fromaddress fuori dal giro, che si sta utilizzando per l'invio di mail. Il campo fromaddress è sempre nuovo e di nuovo assegnato nel ciclo che è il tuo problema.

Cinque anni dopo (spero che questo sviluppatore non è ancora in attesa di una correzione a questo ..)

Ho avuto lo stesso problema, causato dallo stesso errore: mi stava dichiarando il SmtpClient all'interno del ciclo.

La soluzione è semplice - dichiarare una volta, al di fuori del circuito ...

MailAddress mail = null;
SmtpClient client = new SmtpClient();
client.Port = 25;
client.EnableSsl = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = true;
client.Host = smtpAddress;       //  Enter your company's email server here!

for(int i = 0; i < number ; i++)
{
    mail = new MailMessage(iMail.from, iMail.to);
    mail.Subject = iMail.sub;
    mail.Body = iMail.body;
    mail.IsBodyHtml = true;
    mail.Priority = MailPriority.Normal;
    mail.Sender = from;
    client.Send(mail);
}
mail.Dispose();
client.Dispose();

Questo errore può essere visualizzato quando il server web non può accedere al server di posta. Assicurarsi che il server web possa raggiungere il server di posta, ad esempio, il ping di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top