2012-11-06 10 views
8

Il metodo SmtpClient.Send() sta gettando questa eccezione quando cerco di inviare una e-mail a un indirizzo che contiene un carattere accentuato (é):SmtpException: il client o il server è configurato solo per gli indirizzi email con ASCII locali-parti

System.Net.Mail.SmtpException: il client o il server è configurato solo per gli indirizzi di posta elettronica con parti locali ASCII: lé[email protected]
a System.Net.Mail.MailAddress.GetAddress (booleano allowUnicode)
a System.Net.Mail.SmtpClient.ValidateUnicodeRequirement (MailMessage ...)
a System.Net.Mail.SmtpClient.Send (messaggio MailMessage)

La formulazione del messaggio mi fa sembrare che ci possa essere un'impostazione che posso attivare per fare questo lavoro, anche se non ho trovato nulla su questo argomento.

Ho provato diversi server SMTP, incluso Gmail. Ecco i bit rilevanti per un Repro:

Codice

var msg = new MailMessage(); 
msg.Subject = "Test"; 
msg.From = new MailAddress("[email protected]"); 
msg.To.Add(new MailAddress("lé[email protected]")); 

new SmtpClient().Send(msg); 

app.config

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
      <network host="smtp.gmail.com" port="587" userName="[email protected]" password="password" enableSsl="true" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
+0

è possibile mostrare il codice che si sta utilizzando quando si tenta di inviare e-mail tramite il metodo SmtpClient.Send() – MethodMan

+0

Il codice è molto semplice, simile all'esempio nella documentazione SmtpClient.Send(), e comunque funziona correttamente. –

risposta

-4

.NET supporta solo caratteri ASCII. Non credo che supporti i caratteri ASCII estesi (che include l'e accentata in questione).

http://www.asciitable.com/

abbiamo incontrato gli stessi problemi con gli utenti cercando di utilizzare il carattere danese per un/e.

+0

Hai ragione, ho trovato altre informazioni che non ho trovato inizialmente perché la gente sembra ricevere un messaggio di errore diverso per lo stesso problema: "La stringa specificata non è nel modulo richiesto per un indirizzo e-mail" –

+9

questa risposta non è corretta - .NET * non * supporta non-ASCII e invierà felicemente la posta fintantoché il gateway SMTP risponde con SMTPUTF8 in risposta a EHLO – Andrew

+0

Puoi fornire un collegamento/documentazione per mostrarlo? – tsells

11

Se la proprietà DeliveryFormat dell'istanza SmtpClient è impostata su SmtpDeliveryFormat.SevenBit (impostazione predefinita), è necessario assicurarsi che il gateway SMTP stia rispondendo con SMTPUTF8 quando viene inviato ELHO by .NET mentre sta tentando di inviare l'e-mail. SmtpClient lo usa per capire se il gateway è in grado di supportare UTF8.

Se DeliveryFormat è SmtpDeliveryFormat.International, sarà possibile inviarlo indipendentemente.

+1

Provato a impostare il formato di consegna su Internazionale, ottenendo sempre lo stesso errore (con il server di Gmail). –

+0

Ha funzionato per me, grazie! – blazkovicz

+0

Lo stesso per me, anche se l'opzione emailClient è impostata su SmtpDeliveryFormat.International, si lamenta ancora che "Il client o il server è configurato solo per gli indirizzi e-mail con parti locali ASCII" ... che sta inviando tramite il server SMTP Mandrill . –

1

risposta tardi, ma, ho risolto questo specificando la codifica in questo modo:

var mailMessage = new MailMessage 
      { 
       From = new MailAddress("[email protected]", "Test User", Encoding.UTF8) 
} 

Nel mio caso, il server è stato la causa dell'errore.

Problemi correlati