Suggerimento su creazione mail html

martedì 01 maggio 2012 - 13.54
Tag Elenco Tags  C#  |  .NET 3.5  |  Visual Studio 2010  |  Office 2007

andrestu Profilo | Expert

qualcuno di voi ha mai creato da c# una mail in formato htrml con tanto di grafica?
io non lo avevo ancora fatto e la cosa mi sta facendo perdere la pazienza, nel senso che a quanto pare non puoi formattarla table-less.
ho sempre costruito le mie pagine evitando l'uso di tabelle e utilizzando esclusivamente div e css, praticamente non lho mai utilizzate solo che ora mi ritrovo a quanto pare a doverle utilizzare perchè programmi come outlook non leggono o leggono in parte la formattazione css.
Mi sfugge qualcosa o mi confermate quanto detto?
Conoscete il modo per bypassare il problema?
E in caso non si potesse fare a meno di tabelle mi suggerite un buon generatore di codice html da poter utilizzare al volo per queste circostanze?

io sinceramente ste cose proprio non le comprendo, potrei capirlo su versioni obsolete di outlook ma almeno nelle ultime potevano considerare un buon supporto alla formattazione css!!!

PS: non riesco neanche ad inserire il background alla tabella, ho provato nel classico modo tramite codice di stile inline ma niente non me lo considera...

Andrea Restucci - Web Developer

freeteo Profilo | Guru

Ciao,
io ho mandato via email In format html, non con la classe .net ma con I componenti di http://www.advancedintellect.com, ma non penso possa essere questo il motivo.

Puoi postare un codice html che usi nella email,in modo da poter provare?
Grazie

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

massimo.missaglia Profilo | Newbie

Ciao,
prova ad incorporare il contenuto del css nella pagina HTML che stai creando (nel tag <STYLE> giusto per intenderci), quindi tutto il testo HTML diventa il Body della tua mail ed imposti il parametro IsBodyHtml =true-

MailMessage Mail = new MailMessage();
Mail.From = new MailAddress("from@prova.it");
Mail.To.Add("to@prova");
Mail.Subject = "Oggetto";
Mail.Priority = MailPriority.Normal;
Mail.Body = "<html><body>....</body></html>";
Mail.IsBodyHtml = true;

System.Net.Mail.SmtpClient Smtp = new System.Net.Mail.SmtpClient();
Smtp.Send(Mail);

Massimo Missaglia
-------------------------------
www.MassimoMissaglia.com

freeteo Profilo | Guru

Ciao Massimo,
andrestu in calce al messaggio aveva detto:
>...ho provato nel classico modo tramite codice di stile inline ma niente non me lo considera...
pare quindi che avesse già provato a farlo, ma vediamo se mette qualche pezzo di codice magari ci aiuta a capire se il problema è la formattazione il testo html

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

andrestu Profilo | Expert

allora ragazzi,
questo è un esempio del codice:

<html>
<head>
</head>
<body style=" background-color:#0e0606;">
<table border="0" cellpadding="1" cellspacing="1" style="width: 808px; height: 678px; background-image: url('http://www...'); background-repeat: no-repeat; background-position: center center;">

</table>
</html>

giusto per l'esempio ho tagliato il percorso intero dell'immagine di background e il contenuto della tabella, comunque intendo precisare che lanciando l'html in locale si vede tutto regolarmente.

e questo è il codice c#:

mail.BodyEncoding = Encoding.UTF8;
string path = Server.MapPath("~/...");
StreamReader sr = new StreamReader(path);
string body = sr.ReadToEnd();
sr.Close();
mail.IsBodyHtml = true;
mail.Body = body;


> io ho mandato via email In format html, non con la classe .net ma con I componenti di http://www.advancedintellect.com, ma non penso possa essere questo il motivo.
grazie del link, il fatto è che questi tools sono a pagamento e per il momento non ho budget da investire per questa problematica, comunque sarebbe interessante capire se con questi tools funziona.

> prova ad incorporare il contenuto del css nella pagina HTML che stai creando (nel tag <STYLE> giusto per intenderci)...
come puoi vedere gli elemnti di stile sono inlinea quindi non serve nessun file di stile.

Il punto è che non ho ancora capito se devo utilizzare esclusivamente table oppure anche normali div?
io sarei molto più pratico nel strutturare con i div, e comunque il risultato su outlook utilizzando la tabella è che la struttura la visualizza correttamente il background no, invece con i div ancora peggio...



Andrea Restucci - Web Developer

freeteo Profilo | Guru

Ciao,
il fatto che quelle librerie siano a pagamento è per tutta una seria di funzionalità che hanno a bordo, ma di fatto per il tuo problema dell'html non renderizzato correttamente non credo che possa cambiare, la classe .net funziona bene ugualmente.

Ma non ho capito se il tuo problema è solo nell'immagine di sfondo (magari l'url non lo vuole caricare per qualche strano motivo) oppure se a livello di antispam viene tagliato qualcosa per sicurezza, o ancora se succede solo con Outlook o anche se la visualizzi tramite webmail, o Live Mail, Thunderbird o altri client di posta.
Hai fatto anche queste prove?

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

andrestu Profilo | Expert

ma a quanto pare se utilizzo una table l'unica cosa che non viene considerato è il background (la struttura funziona correttamente) se invece strutturo il documento con i div non vengono considerate le informazioni di stile che servono per la struttura (per esempio position:relative e position:absolute) e ovviamente anche il background, invece un immagine inserita normalmente viene visualizzata.
in poche parole è come se non "digerisse" bene alcuni stili.
con altri client non ho provato, ho preso outlook 2007 come riferimento.
faccio ulteriori test e vi faccio sapere...

Andrea Restucci - Web Developer

martinez Profilo | Senior Member

Ciao a tutti ....

>ma a quanto pare se utilizzo una table l'unica cosa che non viene
>considerato è il background (la struttura funziona correttamente)

Esattamente ed il perché è dovuto al fatto che ogni mails reader di qualunque forma e natura adotta un proprio DOCTYPE dove nella maggior parte (in tutti quelli da me analizzati) dei casi lo style background non è contemplato e quindi è come se non esistesse.
Volendo infierire oltre, per dimostrare la mancanza di standard sull'argomento, provate a caricare la stessa mail HTML su outllok 2007 e su outlook 2010, noterete purtroppo che gli stili CSS saranno interpretati diversamente anche su due versioni diverse dello stesso software.

>se invece strutturo il documento con i div non vengono considerate
>le informazioni di stile che servono per la struttura (per esempio
>position:relative e position:absolute) e ovviamente anche il
>background, invece un immagine inserita normalmente viene visualizzata.

Questo a conferma di quanto detto fin qui ... i vari stili position background ecc ecc non sono minimamente abilitati dai vari client di posta ...

>in poche parole è come se non "digerisse" bene alcuni stili.
>con altri client non ho provato, ho preso outlook 2007 come riferimento.
>faccio ulteriori test e vi faccio sapere...
>
>Andrea Restucci - Web Developer

Il problema potrebbe essere risolto costruendosi un proprio DOCTYPE ad HOC e fornendolo in pasto alla mail da spedire ... come ho visto fare ad alcune grandi mayor, ma anche in questi casi alcuni reader fanno cilecca ... Spesso, infatti in tutte le mail “fatte bene” da me visualizzate, viene riportata nella stessa una dicitura del tipo: “Se non visualizzi correttamente questa mail clicca qui” che in realtà apre la stessa mail in una pagina web del dominio permettendone la corretta visualizzazione.

Per finire, ad esempio, Google mail, ultimamente ha aggiornato il suo doctype adattandolo ad HTML5... quindi probabilmente chi usa quel reader vedrà correttemente anche mail come quella che vorresti inviare te (div, background, position ecc) però anche se gmail copre una buona fetta di mercato, non rappresenta la totalità degli utenti, e tra i propri utenti non tutti leggono esclusivamente attraverso la webmail ...

Io, mi sono rassegnato, ed utilizzo quello che più o meno utilizzano tutti (google, amazon ecc ecc): tabelle senza immagini di sfondo, tipo di font, <h1>...<h6> <p> <b> <img> margin padding border color e null'altro ... Con molta fantasia e pazienza sono sufficienti ad inoltrare una buona mail HTML. Includo anche la possibilità di visualizzare la mail via web.

Grazie di aver letto e scusate se mi son dilungato ma mi sembrava necessario farlo.

Antonio

andrestu Profilo | Expert

grazie martinez,
almeno ora so "di che morte devo morire".
che palle però!!!, era così semplice e veloce costruirle come fossero un normale documento html e invece nò devo menarmela a formattare con le tabelle, cosa che odio fare visto la mia poca praticità nell'utilizzarle.
hai mai pensato e/o provato a soluzioni alternative del tipo trasformo il mio documento html in un immagine e la inserisco nel corpo della mail ???

Andrea Restucci - Web Developer

martinez Profilo | Senior Member

Ciao!

Premetto che con molta pazienza e calma e facendo dei test appropriati ed approfonditi, ho anche realizzato delle mail HTML senza le tabelle con l'ausilio di soli div, ma la strada è lunga e farraginosa.

Per quanto concerne la trasformazione in immagini, è ovvio che è una strada veloce per fare mailing ma è del tutto negativa:
1) Spam ... le mail con sole immagini vengono cosniderate quasi sempre spam
2) Sicurezza ... Molti, anzi quasi tutti, mailreader, per una questione di sicurezza non visualizzano le immagini senza l'esplicito consenso dell'utente, quindi nel circa 80% dei casi (statistica) la tua mail andrebbe nel cestino senza che l'utente legga nemmeno un rigo.
3) Marketing ... Con una sola immagine è difficle fare MailMarketing ... Le mail che tu invii che funzionalità e/o che scopo devono avere?

Insomma, al tuo posto, mi porrei prima la domanda sugli obiettivi da intraprendere con questi inoltri e poi da li andrei a costruire uno strumento ad HOC che renda immediatamente fruibile il tutto. Se vuoi possiamo, con altri post, occuparci della cosa ma entriamo in un settore diverso, quello del WebMarketing, Mi farebbe molto piacere la cosa, anche per raccogliere altre esperienze in merito che non fanno mai male.

Un saluto!
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