ciao, prego! La tua esposizione del problema è molto chiara :)
agserna ha scritto:
Quando imposto le credenziali in "Posta SMTP" del nodo server, IIS scrive correttamente le credenziali nel web.config di root della versione 2.0 del framework e che ho impostato la mia applicazione per usare la stessa versione del framework ma le mail non vengono inviate.
Controlla il web.config dell'applicazione. Può darsi che, dopo varie prove, ti sia rimasto un elemento system.net/mailSettings con attributi vuoti o non esatti. Se lo trovi, rimuovilo. Esempio:
<system.net>
<mailSettings>
<smtp>
<network host="" />
</smtp>
</mailSettings>
</system.net>
Il web.config dell'applicazione e quello di root vengono "appiattiti" l'uno sull'altro, a formare una configurazione unica. Cioè: se esiste un elemento
system.net/mailSettings in entrambi i file di configurazione, quello presente nel web.config dell'applicazione avrà la priorità perché più specifico, e i valori che avevi messo nel web.config di root risulteranno sovrascritti. Nell'esempio qui sopra, un host vuoto ("") sovrascriverà quello eventualmente presente nel web.config di root e potrebbe essere la causa del mancato recapito delle email.
Istanzia un SmtpClient e fai un banale Response.Write delle sue proprietà, giusto per verificare se contengono i valori che ti aspetti. Questo pezzo di codice stamperà l'Host e lo username.
using (var smtpClient = new SmtpClient())
{
var messaggio = string.Format("Host: {0}, Nome utente: {1}",
smtpClient.Host,
(smtpClient.Credentials as NetworkCredential).UserName);
Response.Write(messaggio);
}
agserna ha scritto:
ho impostato la mia applicazione per usare la stessa versione del framework
Penso che sia superfluo dirlo ma... occhio anche alla versione a 32 o 64 bit. Se sull'application pool della tua applicazione hai impostato "
Attiva applicazioni a 32 bit", il file web.config di root da scegliere sarà quello che si trova dentro %windir%\Microsoft.NET\Framework, altrimenti quello dentro %windir%\Microsoft.NET\Framework64
agserna ha scritto:
Non è che per utilizzare le credenziali impostate nel nodo server (web.config di root) devo mettere qualcosa di specifico nel web.config dell'applicazione?
No, non devi mettere nulla. Puoi leggere qui di come Asp.Net calcola la configurazione finale a partire dai molteplici web.config.
http://msdn.microsoft.com/it-it/library/ms178685.aspx#calculating_configuration_settings_at_runtimeagserna ha scritto:
Ultima domanda: perchè impostando le credenziali in "Posta SMTP" del nodo server IIS scrive le credenziali nel web.config di root della versione 2.0 del framework e non nel web.config della V.4 del framework?
Non ne ho idea... :/ neanche impostando il framework 4 come
predefenito, né usando l'
editor di configurazione sono riuscito a farlo scrivere sul web.config di root del framework 4.
Pazienza, puoi pur sempre editarli tutti col blocco note. Per evitare di ripetere i dati SMTP in tutti e 4 i file (2 per la v2.0 e 2 per la v4.0), puoi crearti un file .config esterno e digitarli lì dentro.
I 4 web.config, poi, mediante l'attributo configSource dell'elemento <smtp> referenzieranno tutti questo file. Qui trovi un esempio:
http://stackoverflow.com/questions/804427/storing-smtp-outside-the-web-config-fileciao
Modificato da BrightSoul il 18 luglio 2012 23.01 -