Domanda

Sto tentando di inviare e-mail in formato HTML utilizzando C # 3 tramite Outlook.MailItem

Outlook.MailItem objMail = (Outlook.MailItem)olkApp.CreateItem(Outlook.OlItemType.olMailItem);
objMail.To = to;
objMail.Subject = subject;
objMail.HTMLBody = htmlBody;

L'e-mail viene generata esternamente salvando da un controllo RTF (TX Text Control), che genera HTML con collegamenti a immagini archiviate in una sottodirectory <<FileName>> _ file. Esempio:

<img border="0" src="file:///C:/Documents%20and%20Settings/ItsMe/Local%20Settings/Temp/2/zbt4dmvs_Images/zbt4dmvs_1.png" width="94" height="94" alt="[image]">

L'invio dell'e-mail in questo modo genera un'e-mail con collegamenti interrotti.

L'uso di Outlook 2007 come client di posta elettronica con Word come editor di posta elettronica, il passaggio a RTF (scheda Opzioni, gruppo di schede Formato) conserva il layout e allinea le immagini.

A livello di programmazione, tramite:

var oldFormat = objMail.BodyFormat;
objMail.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
objMail.BodyFormat = oldFormat;

perde la formattazione e manipola le immagini (l'immagine diventa un marcatore di link [image] sullo schermo che è cliccabile ma non mostra più l'immagine). Non è una sorpresa, dato che la documentazione per Proprietà MailItem.BodyFormat dice " Tutta la formattazione del testo andrà persa quando la proprietà BodyFormat passa da RTF a HTML e viceversa " ;.

Purtroppo non sembra esserci un modo semplice per cambiare il Type di ogni Attachment da MailItem.Attachements a OlAttachmentType.olByValue, poiché è una proprietà di sola lettura che viene impostata quando si crea <img>.

Un approccio che viene in mente è di camminare sull'HTML, sostituendo i tag MailItem con marcatori e camminando programmaticamente il Outlook.Attachment testo, inserendo un src="cid:uniqueIdN" di <=> <=>.

Un'altra opzione è quella di convertire i collegamenti <=> per utilizzare <=> e aggiungere le immagini come allegati con le identità di riferimento.

Quindi, alla domanda ... C'è un modo per convertire le immagini collegate in immagini incorporate, idealmente senza entrare in strumenti di terze parti come Redemption? La conversione in RTF sembra produrre il risultato, ma farlo in questo modo non è affatto un prerequisito, e ovviamente può perdere la fedeltà - Voglio solo che funzioni: D Nessuna delle mie idee esistenti mi sembra pulita.

È stato utile?

Soluzione 2

DOH !, in realtà invio l'e-mail in Outlook 2007 impone che le immagini vengano incorporate.

La dimensione dell'elemento inviato di 8 KB è molto più piccola della dimensione della bozza di 60 KB (RTF) che stavo vedendo rispetto alla dimensione della bozza di 1 KB (HTML che non era stato convertito in RTF e viceversa).

Quindi faceva sempre quello che volevo dire. Grr.

Lascerò la Q e la A qui nel caso in cui aiuti qualcuno di uno stato mentale allo stesso modo confuso.

A proposito alcuni link utili che ho trovato nel mio viaggio:

Esempio di invio di email

General Q & amp; Un sito con altri esempi di qualità variabile

Altri suggerimenti

Dato che stai usando .net > 2.0, potresti voler esaminare lo spazio dei nomi System.Net.Mail per la creazione di messaggi di posta. Ho scoperto che è abbastanza personalizzabile ed è stato molto facile da usare per un compito simile al tuo. L'unico problema che ho avuto è stato assicurarmi di utilizzare il codifica , e ho dovuto usare le tabelle HTML per i layout (il CSS non funzionava correttamente). Ecco alcuni link per mostrarti come funziona ...

Se questa non è un'opzione, allora consiglierei di seguire il percorso Content ID e di incorporare le immagini come allegati. L'altra opzione è quella di ospitare le immagini pubblicamente su un sito Web e modificare i collegamenti delle immagini nell'html in immagini pubbliche.

Qualcosa di cui dovresti essere consapevole è che le e-mail HTML possono facilmente apparire come spam e possono essere trattate come tali da server e client di posta elettronica. Anche quelli che sono solo per uso interno (è successo a me) possono finire nella cartella Posta indesiderata di Outlook.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top