C# Outlook embedded Image HTML Problem

  • C#

    C# Outlook embedded Image HTML Problem

    Problem gelöst...

    Ursache: ?

    Behebung:
    Siehe diesen StackOverflow

    Mein implementation:
    Spoiler anzeigen

    C#-Quellcode

    1. /// <summary>
    2. /// Creates a <see cref="MailItem"/>
    3. /// </summary>
    4. /// <param name="subject">Subject of <see cref="MailItem"/></param>
    5. /// <param name="imagePath">Path of image which will be put into the HTML Body</param>
    6. /// <param name="attachment">Path of file attachment</param>
    7. /// <param name="votings">Voting options delimited by semicolon</param>
    8. /// <param name="displayItem">True if User should see <see cref="MailItem"/></param>
    9. public void NewItem(string subject, string imagePath, string attachment, string votings, bool displayItem)
    10. {
    11. MailItem item = myApp.CreateItem(OlItemType.olMailItem);
    12. if (string.IsNullOrEmpty(item.HTMLBody)) {
    13. item.Delete();
    14. return;
    15. }
    16. addEmbeddedImage(imagePath, item);
    17. item.VotingOptions = votings;
    18. item.Subject = subject;
    19. item.Attachments.Add(
    20. attachment,
    21. OlAttachmentType.olByValue
    22. );
    23. if (displayItem) {
    24. item?.Display( false );
    25. }
    26. }
    27. /// <summary>
    28. /// Adds an Image to the html body of mailitem.
    29. /// <para>CALL BEFORE ADDING ANY OTHER ATTACHMENTS => look at line 6 'target.Attachments[target.Attachments.Count]'</para>
    30. /// </summary>
    31. /// <param name="imgPath"></param>
    32. /// <param name="target"></param>
    33. private void addEmbeddedImage(string imgPath, MailItem target)
    34. {
    35. const string SCHEMA_CONTENT_ID = @"http://schemas.microsoft.com/mapi/proptag/0x3712001E";
    36. string contentID = System.Guid.NewGuid().ToString();
    37. target.Attachments.Add(imgPath, OlAttachmentType.olByValue);
    38. target.Attachments[target.Attachments.Count].PropertyAccessor.SetProperty(SCHEMA_CONTENT_ID, contentID);
    39. string body = string.Format(@"<img src=""cid:{0}"" width=""831"" height=""1175""></body>", contentID);
    40. target.HTMLBody = target.HTMLBody.Replace("</BODY>", body);
    41. }


    Original Frage:
    Spoiler anzeigen
    Hallo Leute,

    per C# soll eine Email in Outlook erstellt werden, welche im Body lediglich ein Image enthählt.

    übergebe ich folgenden string an die HTMLBody Property des MailItems geht es:

    C#-Quellcode

    1. var embeddedImage = $"<body><img src=\"{imagePath}\"></body>";

    HTML-Quellcode

    1. <body><img scr="..."></body>


    möchte ich allerdings die größe des Bildes anpassen oder sonst irgendwas machen,
    dann wird mir nur noch ein leerer Container für dieses Bild angezeigt.
    Bsp.:

    C#-Quellcode

    1. <body><img src=\"{}\" width=\"{831}\" height=\"{1175}\"></body>

    HTML-Quellcode

    1. <body><img src="..." width="831" height="1175"></body>


    Auch mit shrinkToFit und ähnlichem erhalte ich lediglich einen leeren Platzhalter für das Bild...

    Habt ihr eine Idee was ich falsch mache?

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Petersilie“ ()