2012-01-30 3 views
6

Non è possibile inviare e-mail tramite ASP.NET e inviato una mail al mio host web per un po 'di aiuto e gli fu detto di modificare le impostazioni di sicurezza ed è stato inviato un link:impostazione Livello di attendibilità in web.config

http://forums.asp.net/t/1111145.aspx/1

ho letto quello che ha detto lì e provato a installare <trust level="Full" originUrl="" /> nel web.config, ma poi ho l'errore:

This configuration section cannot be used at this path. This happens when the site administrator has locked access to this section using <location allowOverride="false"> from an inherited configuration file.

io non ho impostato qualsiasi altro file web.config.

così ho chiesto al web host di nuovo, e ha chiesto se si trattava di un'impostazione del server che non posso cambiare, ma la risposta che ho ottenuto è stato solo:

You'll need to specify a more specific path.

che è incantevole, ma ho non ho idea di cosa significhi!

Avendo fatto un po 'più di scavo mi chiedo se devo creare un file separato trust, è corretto?

Qualcuno potrebbe indicarmi la direzione del modo corretto per impostare il mio livello di fiducia (mi rendo conto che "pieno" è probabilmente anche scorretto?) Perché davvero non capisco cosa dovrei fare!

risposta

7

I livelli di affidabilità sono documentati qui: http://msdn.microsoft.com/en-us/library/ie/wyts434y.aspx. Nell'hosting condiviso, i provider bloccano le impostazioni, quindi non puoi cambiare nel tuo web.config. Se hai chiesto chiaramente al tuo fornitore di concedere piena fiducia alla tua domanda, e se hanno risposto con "huh?", Allora hai parlato con una persona non istruita - richiedi l'escalation o cambia host. "Si prega di configurare la mia applicazione con piena fiducia" dovrebbe essere abbastanza chiaro. Nota che potrebbero non essere disposti a farlo, una volta compresa la tua richiesta.

Inoltre, non posso essere sicuro che sia necessario un trust completo per inviare la posta. L'invio di posta elettronica implica la capacità di comunicare con un server SMTP, e in genere gli host Web consentono l'accesso solo alla loro e bloccano tutto il resto (per la prevenzione dello spam). Non sarai in grado di dirgli di fare un'eccezione per te, ma se chiedi "per favore dimmi quale smtp e porta utilizzare per inviare email dalla mia applicazione asp.net", dovrebbero dartelo (altrimenti, eseguire l'escalation o cambiare host). In realtà dovresti chieder loro di aiutarti a inviare la posta prima, prima di concludere che il livello di fiducia è ciò che lo sta ostacolando (ora sono abbastanza sicuro che non lo sia).

Inoltre, leggere questo, per favore: https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

+0

Grazie. Quindi quello che stai dicendo è che la loro risposta è stata ancora più inutile di quanto pensassi! Riferendomi al punto che avrei dovuto chiedere loro come inviare la posta attraverso i loro server prima ... In realtà, l'ho fatto! Ho mandato loro un codice di esempio e mi è stato detto che dovrebbe andare bene. Poi mi sono imbattuto nel problema che mi ha spinto a postare qui. Le invierò di nuovo via email chiedendo una risposta più completa. –

+0

Sono abbastanza sicuro di avere un'app in hosting condiviso con trust parziale per l'invio di posta. È improbabile che gli host ti diano piena fiducia, perché ciò rappresenta un rischio per il loro server e altre app in esecuzione su di esso; useranno questa opportunità per pubblicizzare i propri server dedicati, in genere. Utilizzare le classi di .NET per inviare e-mail (o almeno per verificarne il funzionamento) prima di iniziare a utilizzare alcune librerie di posta di terze parti (è possibile trovare codice di esempio, richiede solo poche righe + alcune modifiche a web.config).Quindi, se l'invio della posta non riesce, incolla qui le informazioni sulle eccezioni; e scopriremo qualcosa. –

+1

Sì, la maggior parte dell'hosting condiviso non supporta il Full Trust, quindi è necessario verificarlo con il proprio provider corrente. Ma se hai davvero bisogno di un hosting completo, posso dare un nome, HostForLife.eu. Puoi trovare il loro sito sul sito di Microsoft. :) –

-1

Prova questa:

public static void ConfirmMail(string emailTo) 

{ 
    try 
    { 

     MailMessage message = new MailMessage(); 
     message.Subject = "Account Registration From 91calls"; 
     message.From = new MailAddress(Convert.ToString("[email protected]"),"Admin"); 
     message.To.Add(emailTo); 
     message.BodyEncoding = System.Text.Encoding.UTF8; 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("<html>"); 
     sb.Append("<Body>"); 
     sb.Append("<table cellpadding='0' cellspacing='0' width='100%' border='0'>"); 
     sb.Append("<tr><td align='center'><table cellpadding='0' cellspacing='0' width='100%' border='0'>"); 
     // sb.Append("<tr><td align='left'><asp:Image ID='imgLogo' runat='server' ImageUrl='http://supervau.w01.winhost.com/images/logo.png' />"); 
     sb.Append("</td></tr><tr><td>Hi, <br></td></tr><tr><td align='left'>You are successfylly resgistered with 91 calls.<br>"); 
     sb.Append("<br>Thank you for using, : http://www.91calls.com<br /><br>For questions or concerns regarding your account, please visit : http://www.91calls.com"); 
     sb.Append("</td></tr></table></td></tr></table>"); 
     sb.Append("</Body>"); 
     sb.Append("</html>"); 
     message.Body = sb.ToString(); 
     message.IsBodyHtml = true; 
     SmtpClient client = new SmtpClient(); 
     client.Send(message); 


    } 
    catch 
    { 
    } 

}