wmartin ha scritto:
dove smtp_server_address mi è imposto dal provider dell'hosting un po' come si configura un client di posta o mi sbaglio?
no, non sbagli. Le credenziali sono necessarie per accedere al servizio di spedizione e-mail.
Forse un tempo le politiche dei provider erano più rilassate e ti consentivano di spedire dai loro spazi hosting anche senza credenziali. Oggi, tuttavia, con tutto lo spam che gira fanno bene a voler identificare i propri utenti. Questo gli da un controllo più granulare sulle e-mail che partono. Potrebbero, per esempio, imporre un limite di tot email all'ora per ogni utente.
al posto di Indirizzo_di_posta sono costretto a mettere l'indirizzo della email che ho creato presso l'hosting mentre al posto di indirizzo_da_mostrare posso mettere ciò che voglio ma poi al destinatario arriva come mittente "indirizzo_di_posta"
Queste tecniche sono simili a quelle che usa chi fa phishing :) Fingersi qualcun altro non è mai una buona cosa e i filtri antispam tendono a cestinare le email in cui il mittente è contraffatto. Esiste anche un protocollo, l'
SPF, che ha il preciso scopo di impedire il
forging dell'indirizzo mittente. Non tutti i server di posta lo impiegano (forse un 50%?) e quindi molte e-mail provenienti da server non esplicitamente autorizzati vengono lasciate passare.
Puoi procedere in due modi.
Il primo è solo un tentativo perché non ho idea di come sia stato configurato il server di posta del tuo provider, e quindi potrebbe non funzionare.
Hai notato che l'oggetto MailMessage ha 2 proprietà per indicare il mittente? Una è .Sender, l'altra è .From.
.Sender deve contenere l'indirizzo di colui che spedisce "fisicamente" il messaggio, cioè il tuo indirizzo, quello che hai creato con l'hosting.
.From è l'indirizzo che verrà mostrato nel client di posta. E' la persona per conto della quale il messaggio è stato spedito. E' l'indirizzo dell'utente, quello che leggi da una textbox.
Specificare un Sender diverso dal From ti fornisce un grado maggiore di trasparenza. Tu comunichi al server che sei tu che spedisci il messaggio per conto di un altro, e il filtro SPF *potrebbe* essere clemente con te. Dico potrebbe perché ognuno ha la facoltà di modificare il proprio server come gli pare, come questo
tizio qui.
Differenziare il Sender è anche il sistema usato da Aspitalia per la messaggistica tra gli utenti. Se guardi il sorgente del messaggio che ti ho mandato noterai che il mio indirizzo risulta essere il From; mentre il Sender è un indirizzo di ASPItalia.com, cioè con lo stesso dominio delle pagine da cui il messaggio si è originato.
Se il tuo provider ti consente di fare questo, non puoi comunque lasciare che l'utente digiti quel che vuole nella textbox. Devi imporgli di usare l'indirizzo email con il quale si è registrato, altrimenti rischi che il tuo modulo venga bersagliato dagli spammer. Mettici anche un captcha, per giusta misura.
La seconda cosa che puoi fare è molto più semplice, ed è usare l'header Reply-To. E' fatta apposta per indicare un indirizzo di risposta che verrà usato come destinatario quando l'utente andrà a rispondere al messaggio. Questo è forse il metodo che ti consente di avere una
deliverability maggiore. L'utente saprà che il messaggio proviene da te, perché lo vede dal mittente, ma quando andrà a rispondere, nel nuovo messaggio comparirà l'indirizzo del vero mittente.
MailMessage msg = new MailMessage();
msg.From = new MailAddress("tuoindirizzo@hosting.com");
msg.ReplyToList.Add(new MailAddress("mittente@hotmail.it"));
msg.To.Add(new MailAddress("destinatario@live.it"));
ciao,
Modificato da BrightSoul il 21 giugno 2011 19.42 -