System.net.mail se l'email è di hotmail mi manda sempre in indesiderat...

mercoledì 28 dicembre 2011 - 16.46
Tag Elenco Tags  VB.NET  |  .NET 3.5

zseven Profilo | Senior Member

Ciao ragazzi,
scusate il titolo un pò strano, spero sia chiaro.

Sto inviando una email di conferma ad un indirizzo email inserito in fase di registrazione.
Purtroppo se l'email è di hotmail va sempre in posta indesiderata.
Il contenuto dell'email non contiene link, ma solo il testo da copiare e incollare nel browser per l'attivazione.

Vi scrivo di seguito il codice, sapete dirmi se sbaglio o manco qualcosa?

Grazie mille

Dim myEmail As New Net.Mail.MailMessage myEmail.IsBodyHtml = True myEmail.From = New MailAddress("login@miosito.com", "miosito") myEmail.Subject = "Conferma indirizzo email" myEmail.To.Add(New MailAddress(email, "Destinatario")) myEmail.Body = CorpoEmail Dim mySmtpClient As New System.Net.Mail.SmtpClient mySmtpClient.Send(myEmail)

e poi nel web.config la configurazione del smtp

<system.net> <mailSettings> <smtp from="login@miosito.com"> <network host="smtp.miosito.com" password="pass" userName="login@miosito.com"/> </smtp> </mailSettings> </system.net>


Brainkiller Profilo | Guru

>Sto inviando una email di conferma ad un indirizzo email inserito
>in fase di registrazione.
>Purtroppo se l'email è di hotmail va sempre in posta indesiderata.
>Il contenuto dell'email non contiene link, ma solo il testo da
>copiare e incollare nel browser per l'attivazione.

Bel quesito.
Purtroppo i meccanismi anti spam si sono evoluti nel tempo, anche troppo con il risultato che chi è in buona fede non riesce più a spedire una mail. Un meccanismo anti spam verifica una marea di condizioni.
Dal nome mittente, all'e-mail (esiste la mail del tuo mittente o è un indirizzo inventato ?) all'email destinatario (se è CCN oppure se è nel campo TO cambia molto) poi c'è la content analysis quindi il body del messaggio, le parole contenute, se è breve o lungo, se contiene link, immagini o altro, viene verificato inoltre l'oggetto.
Non meno importante è l'SMTP mittente che spedisce la mail. E' un IP dinamico o statico ? Il dominio da cui spedisci ha un record TXT nel DNS ?
Tutte cose da verificare.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Ciao Brainkiller,
grazie per la risposta.

Allora guarda è tutto molto semplice in riferimento a quanto mi chiedi, nel senso che l'email esiste, il destinatario è in to e non in ccn, il contenuto del messaggio è molto semplice, c'è il benvenuto al cliente e l'invito a copiare la riga sottostante del tipi:
www.nomesito.com?attiva.aspx etc etc
ma non è link è solo testuale, immagini non ce ne sono.

L'smtp di chi spedisce è l'smtp proprio della casella e viene inviato dal sito stesso, quindi è tutto collegato.

Insomma è proprio tutto pulitissimo ma ancora non gli va a genio a hotmail.

Brainkiller Profilo | Guru

>L'smtp di chi spedisce è l'smtp proprio della casella e viene
>inviato dal sito stesso, quindi è tutto collegato
>Insomma è proprio tutto pulitissimo ma ancora non gli va a genio
>a hotmail.

Ma il record TXT c'è ? Puoi dire il dominio o è un segreto così verifico.
Puoi anche indicare l'host IP o FQDN (nome per esteso) dell'SMTP ?


David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

purtroppo non posso dirti il dominio, è un progetto di un cliente e non è ancora online.
Sai dirmi come posso verificare l'altra informazione che mi chiedi?

Brainkiller Profilo | Guru

>purtroppo non posso dirti il dominio, è un progetto di un cliente
>e non è ancora online.
>Sai dirmi come posso verificare l'altra informazione che mi chiedi?

Ok apri la command line
Start -> Esegui
digita:

cmd

e premi invio.
digita:

nslookup - 8.8.8.8

premi invio
digita

set type=TXT

premi invio
digita

nomedominio.com

premi invio.
se esce una riga tipo:

"v=spf1 ip4: "

significa che il record TXT c'è.
Se escono più righe tipo:

nomedominio.com
primary name server = ns.ita.tip.net
responsible mail addr = sistemi.infracom.it
serial = 2011122701
refresh = 3600 (1 hour)
retry = 3600 (1 hour)
expire = 1814400 (21 days)
default TTL = 86400 (1 day)

il record TXT non c'è e io ti consiglio di crearlo.

poi devi verficare che ci sia un reverse DNS pointer sul mail server esempio se l'IP è 1.1.1.1 e fai da command line:

ping -a 1.1.1.1

ti dovrebbe restituire il nome per esteso per es. mail.nomedominio.com
se esce è ok, se no ti consiglio di creare il reverse pointer.

poi farei una verifica anche sulle liste spam esempio da qui:
http://www.mxtoolbox.com/blacklists.aspx
dell'IP del mail server che spedisce la mail

Infine se non riesci ancora a risolvere leggi la guida Microsoft per quanto riguarda la loro gestione dello spam:
http://mail.live.com/mail/services.aspx
ci sono varie soluzion da implementare alcune delle quali ti ho già segnalato.

Naturalmente puoi anche fare dei test agendo sul body, modificandolo, allungandolo, ecc.

Ciao


David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

dunque ho fatto tutte le verifiche che mi hai indicato,
il record TXT non è presente, e non è presente nemmeno il reserv ip.

Il dominio il cliente l'ha registrato su aruba comprensivo di hosting e non ha la possibilità di modificare i dns, penso quindi che non posso impostare il record TXT come mi hai suggerito, o mi sbaglio?
L'smtp che invia non sta in blacklist.

Per quanto riguarda invece la semplice formattazione del messaggio, ritieni che un testo più lungo venga visto in maniera positiva da hotmail?
Ovviamente è solo hotmail che mi blocca la posta, tanti altri provider che ho provato funzionano regolarmente.

Grazie mille per le spiegazioni!

Brainkiller Profilo | Guru

>Il dominio il cliente l'ha registrato su aruba comprensivo di
>hosting e non ha la possibilità di modificare i dns, penso quindi
>che non posso impostare il record TXT come mi hai suggerito,
>o mi sbaglio?

No infatti, brutta cosa il servizio di Aruba che non ti consente la modifica dei record DNS

>L'smtp che invia non sta in blacklist.

Ok

>Per quanto riguarda invece la semplice formattazione del messaggio,
>ritieni che un testo più lungo venga visto in maniera positiva
>da hotmail?

Puoi provare. E' chiaro che loro non ti possono dire perchè viene manato in indesiderata perchè se no tutti riuscirebbero a passare i controlli e a spammare. Quindi devi provare un po' tu.

>Ovviamente è solo hotmail che mi blocca la posta, tanti altri
>provider che ho provato funzionano regolarmente.

Eh eh. I filtri usati poi sono molto evoluti e si aggiornano man mano. Per esempio è possibile che una o più persone che mettono il tuo mittente nella Allow List vanno a far capire al filtro che magari quel mittente è attendibile e quindi sulla base dei pesi assegnati poi a un certo punto non ti andrà più in indesiderata ma andrà regolarmente in casella.

Anche le indicazioni che ti ho dato sono delle raccomandazioni, e non è scontato poi che Hotmail ti metterà la mail in Posta in arrivo.

Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Perfetto, grazie mille sei stato gentilissimo.
Se modificando un pò il contenuto riuscirò a farlo funzionare ti risponderò subito ;)

Ciao ciao

LessIsMore Profilo | Newbie

Se la mail contiene solo testo perché hai messo

myEmail.IsBodyHtml = True

???

Prova con

myEmail.IsBodyHtml = False

Se ancora non ottieni nulla prova ad inviare la stessa mail con Outlook: se funziona metti le Headers che invia Outlook e prova...

zseven Profilo | Senior Member

Ragazzi,
io le ho provate tutte, ma niente da fare, hotmail continua a mettere l'email in posta indesiderata.

Ma voi per inviare le email utilizzate questo stesso codice che vi ho scritto sopra?
Avete anche voi problemi con hotmail?

Cosa altro potrei fare per cercare di far funzionare l'invio automatico ad hotmail?
Grazie mille
Guido

Brainkiller Profilo | Guru

>Ma voi per inviare le email utilizzate questo stesso codice che
>vi ho scritto sopra?
>Avete anche voi problemi con hotmail?

Io mi sono appena mandato una mail in plain text con quel codice al mio indirizzo hotmail con nel body un breve scritto e un link. Però naturalmente fatte salve le indicazioni che ti ho indicato nei msg precedenti. Reverse DNS, Record TXT ecc.
E mi è arrivata in posta in arrivo.
David

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Ciao BrainKiller,
quello che mi avevi detto di fare l'ho provato per un altro mio cliente che ha lo stesso problema.

In quel caso ho impostato gli spf, ma solo su 4 indirizzi ip relativi all'smtp che invia la posta.
Dopo una serie innumerevole di email con aruba mi hanno detto che non possono darmi l'elenco completo degli ip che gestiscono l'invio della posta, e a quel punto ho dovuto per forza abbandonare la configurazione degli spf nonostante potessi farlo tramite il pannello di controllo.

In questo caso non posso gestire i record TXT ma comunque non cambierebbe niente perchè avrei ugualmente il problema di cui sopra.

Detto questo posso arrivare a dedurre che finchè il dominio, e quindi la posta sarà gestita da aruba le email che saranno inviate andranno sempre in posta indesiderata, giusto?
Tu hai utilizzato un smtp non di aruba?

Grazie mille
Guido

Brainkiller Profilo | Guru

>Detto questo posso arrivare a dedurre che finchè il dominio,
>e quindi la posta sarà gestita da aruba le email che saranno
>inviate andranno sempre in posta indesiderata, giusto?
>Tu hai utilizzato un smtp non di aruba?

Ciao Guido,
esatto non uso un SMTP Aruba, dio me ne scampi
Aruba probabilmente va bene se hai un server tuo managed e in quel caso personalizzi tutto tu a tuo piacimento.
Comunque se vuoi fare una prova puoi sempre usare temporaneamente SMTP dell'ISP che usi Alice, Fastweb, autenticandoti naturalmente e mettendo come SPF i loro IP naturalmente sai che ogni modifica su DNS richiede di default 12-24 ore a meno che puoi gestirti i TTL. (tra l'altro io usavo mail.tin.it ma verso hotmail ha problemi anche lui mentre out.alice.it no)
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

eheheh capisco la tua fuga.

Guarda io per tutti i miei clienti ho il dominio ed il server mail da aruba e poi il server mio da un'altra società.

Come ti ho detto purtroppo anche avendo la soluzione da pannello che consente di modificare i DNS, TXT e compagnia purtroppo il problema rimane, perchè aruba non è in grado (o non vuole) dirti l'elenco dei server che spediscono la posta, e se non conosco questa informazione non posso configurare correttamente gli spf. Giusto?

Tu per configurare il record TXT hai dovuto sapere l'elenco dei server che spediscono la posta e quindi inserire la stringa spf con tutti gli indirizzi ip.

Ti trovi con il mio ragionamento o sto sbagliando qualcosa?
Se è tutto corretto quello che ho scritto sopra, con Aruba non si potrà mai riuscire ad inviare posta alle caselle di hotmail che non venga vista come indesiderata, o mi sbaglio?

Grazie mille
Guido

Brainkiller Profilo | Guru

>Giusto?

E' così.
Cmq. vai per passi prova magari come ti ho detto ad usare SMTP più noti (Alice, Fastweb, ecc.) almeno fai una prova intanto.

>Tu per configurare il record TXT hai dovuto sapere l'elenco dei
>server che spediscono la posta e quindi inserire la stringa spf
>con tutti gli indirizzi ip.

Esatto. Essendo l'SMTP un server che mi sono fatto io con un IP, l'IP è solo quello,

>Ti trovi con il mio ragionamento o sto sbagliando qualcosa?
>Se è tutto corretto quello che ho scritto sopra, con Aruba non
>si potrà mai riuscire ad inviare posta alle caselle di hotmail
>che non venga vista come indesiderata, o mi sbaglio?

E' giusto quello che dici ma sottolineo nuovamente che il fatto che la posta viene classificata indesiderata dipende da una molteplicità di fattori e dai pesi che hotmail applica a questi fattori. E' chiaro che si va riducendo man mano le cose da fare come in una check list, fatto, fatto, fatto, non fatto, ecc. Quindi quando hai fatto tutti i requisiti vai ad indagare altrove. Magari poniamo che tu hai l'IP di aruba e lo metti in SPF, è un requisito necessario ma magari non sufficiente quindi magari il problema risiede altrove. Altra cosa, se tu invii una mail con le classi .NET non penso avrà un Header X-Mailer (client di posta) quindi Hotmail capisce che è inviata in modo automatico. Magari mettendogli un Header X-Mailer puoi gabbare il filtro di Hotmail, tanto per dirne una. Le prove che si possono fare sono numerose.

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Chiarissimo grazie mille.

Questa cosa dell'headers non la conoscevo.
Adesso provo anche così allora, aggiungo:

myEmail.Headers.Add("X-Mailer", "NomeSito")

Se ho capito bene avrei potuto scrivere anche "Outlook", giusto?

Brainkiller Profilo | Guru

>Se ho capito bene avrei potuto scrivere anche "Outlook", giusto?

Si,
magari mettici uno ufficiale esempio:
X-Mailer: Microsoft Office Outlook 12.0
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Ciao Davide,
perdonami sto provando ad utilizzare gli header, ma se inserisco nel codice:
myEmail.Headers.Add("X-Mailer: Microsoft Office Outlook 12.0", "NomeSito")

mi restituisce questo errore:
An invalid character was found in header name.

Eppure non mi dà errore nel codice.
Cosa ho sbagliato?

Grazie mille
Guido

Brainkiller Profilo | Guru

Mi sa che la sintassi è questa:

myEmail.Headers.Add("X-Mailer", "Microsoft Office Outlook 12.0")

David
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Grazie mille, adesso funziona, ma purtroppo anche con l'intestazione continua ad andare in indesiderata... uffa....

Brainkiller Profilo | Guru

>Grazie mille, adesso funziona, ma purtroppo anche con l'intestazione
>continua ad andare in indesiderata... uffa....

Hai provato ad usare un SMTP noto ? Tipo Alice o Fastweb o Libero, e mettere come DNS TXT l'IP di uscita ? o Comunque il range di IP di uscita ? Stavo pensando che Aruba magari non ti dice l'IP con cui esce l'email ma se poi ne recuper uno di questi IP poi inserisci un range intero. Nel record TXT si può mettere anche un range non solo un singolo IP. Prova a lavorare anche sul corpo della mail.

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

i TXT non li posso impostare su aruba perchè il mio cliente non ha l gestione dei DNS e quindi degli spf.

Ho provato ad inviare anche da un altro indirizzo email, il mio in particolare info@napoliweb.net con relativo smtp.
E anche da questo niente da fare, sempre indesiderata.

Adesso sto provando con out.alice.it, ma mi dà errore.
Nel web.config ho impostato così:

<system.net>
<mailSettings>
<smtp from="info@napoliweb.net">
<network host="out.alice.it" password="miapass" userName="info@napoliweb.net"/>
</smtp>
</mailSettings>
</system.net>

L'errore che mi dà è il segugente:

Mailbox unavailable. The server response was: RCPT TO:<zagarola@live.it> Relaying not allowed - please use SMTP AUTH

Brainkiller Profilo | Guru

>i TXT non li posso impostare su aruba perchè il mio cliente non
>ha l gestione dei DNS e quindi degli spf.

Vero non ricordavo.

>Adesso sto provando con out.alice.it, ma mi dà errore.
>Nel web.config ho impostato così:

Invece che via web.config imposta le credenziali via codice.
E' chiaro che devi autenticarti con un account @alice.it
Immagino che tu ne abbia uno.

SmtpClient d=new SmtpClient("out.alice.it"); d.Credentials = new System.Net.NetworkCredential("esempio@alice.it", "tuapass"); d.Send(g);
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

zseven Profilo | Senior Member

Dunque utilizzando come smtp quello di email.it (non ho un account alice) e come mittente lo stesso indirizzo di email funziona e la email arriva.

Ma in questo modo il mittente non sarà quello del sito, ma un indirizzo gratuito non molto professionale del tipo nomescelto@email.it.
Ho provato infatti a mettere un altro indirizzo come mittente e ovviamente l'email non viene inviata e restituisce errore.

Pensi che questa sia comunque l'unica soluzione per riuscire ad inviare questa benedetta email?

Una curiosità:
inserire le credenziali nell'invio e non nel web.config fa differenza?

Grazie mille

Brainkiller Profilo | Guru

>Pensi che questa sia comunque l'unica soluzione per riuscire
>ad inviare questa benedetta email?

Secondo me sì. Tutte le vie che ti ho indicato sono buone.

>Una curiosità:
>inserire le credenziali nell'invio e non nel web.config fa differenza?

No è uguale.

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5