Frage

Ich habe eine Anwendung in C # geschrieben, die Outlook-Interop verwendet eine neue E-Mail-Nachricht zu öffnen mit Details vorgefüllte der Benutzer vor dem manuell Senden bearbeiten können.

var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
    Outlook.OlItemType.olMailItem);
newMail.To = "example@exam.ple";
newMail.Subject = "Example";
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
newMail.Display(false);

Wenn der gleiche Benutzer eine neue Nachricht erstellt manuell die Schriftart auf Calibri oder je nachdem, was der Benutzer Schriftart als Standard gesetzt hat. Das Problem ist, dass der Text in der automatischen E-Mail erscheint in Times New Roman Schrift, die wir nicht wollen.

Wenn ich Quelle eines der gelieferten E-Mails sehe Ich kann sehen, dass Outlook explizit die Schriftart in der E-Mail-Quelle festgelegt:

// Automated
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:12.0pt;
    font-family:"Times New Roman";
}

// Manual
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
}

Warum sind die Formate unterschiedlich sind und wie kann ich die automatische E-Mail erhalten die Benutzer die Standardeinstellungen zu verwenden? Ich bin mit der Version 11 des Interopassemblys, da es eine Mischung aus Outlook 2003 und 2007 installiert ist.

War es hilfreich?

Lösung

Da es sich um eine HTML-E-Mail, können Sie einbetten leicht, was Styling Sie in den eigentlichen HTML Körper wollen. Ich vermute, das ist, was Outlook tut, wenn Sie eine Nachricht von dem Outlook-GUI erstellen.

Ich weiß nicht wirklich, wie die Benutzereinstellungen zu erhalten. Ich sah durch den Outlook-API (es ist ein seltsames Tier), aber nichts sehen, die den Zugriff auf die Standardnachrichteneigenschaften zur Verfügung stellen würden.

Andere Tipps

Es ist total frustrierend.

Es hilft nicht, dass, wenn Sie das Problem googeln gibt es zu sagen unzählige Antworten Sie einfach zu Stil der Text in CSS. Yeeessss, fein, wenn Sie die vollständige E-Mail und kann Stil sind Erzeugung / steuern den gesamten Text. Aber in Ihrem Fall (und unserem) die Absicht ist, die E-Mail mit anfänglichem Text zu starten und dem Endbenutzer fügt seinen eigenen Text. Es ist sein zusätzlicher Text, der unfehlbar in Times New Roman gemacht wird.

Die Lösung, die wir gefunden ist, das Problem aus einer anderen Richtung zu nähern. Und das ist die Basis zu fixieren / default in Outlook zugrunde liegenden unsere gewählten Schriftart anstelle von Times New Roman zu sein.

Das kann geschehen durch:

  1. Öffnen Sie Word (ja, nicht Outlook)
  2. Gehen Sie auf Optionen -> Erweitert -> Web-Optionen
  3. Ändern Sie die Standardschriftart in der Registerkarte Schriftarten

Video hier:
http://www.youtube.com/watch?v=IC2RvfoMFz8

Ich schätze das nicht hilft, wenn Sie Notwendigkeit steuern oder die Schriftart programmatisch ändern. Aber für diejenigen, mit Kunden zu arbeiten, die einfach die Basis E-Mail-Schrift wollen nicht seine Times New Roman, wenn E-Mails von Code generiert werden, kann dies helfen.

Es ist meine Erfahrung ist, dass eine E-Mail erstellen, wird die Standard-E-Mail-Einstellungen.

Sie setzen GENAU newMail.HTMLBody auf einen Wert, anstelle des Einsetzens Ihre HTML darin. Ich wette, wenn Sie den Inhalt von Htmlbody untersuchen sie mit etwas in ihm, wie der CSS-Code beginnen würde

JEDOCH, wann immer Sie von einem der E-Mail-Werten versuchen zu lesen, Ihre Benutzer die Sicherheit Popup sagen: „Ein Programm versucht, bla bla access..blah“

ich in diese lief bei dem Versuch, die Signatur des Benutzers zu halten, nie einen guten Weg gefunden, es zu erhalten, ohne die Sicherheitsabfrage ausgelöst wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top