C#3を使用してHTML形式の電子メールを送信しようとしていますOutlook.MailItem
Outlook.MailItem objMail = (Outlook.MailItem)olkApp.CreateItem(Outlook.OlItemType.olMailItem);
objMail.To = to;
objMail.Subject = subject;
objMail.HTMLBody = htmlBody;
電子メールは、RTFコントロール(TXテキストコントロール)から保存することによって外部で生成されます。これにより、<<FileName>>
_filesサブディレクトリに保存されている画像へのリンクを含むHTMLが生成されます。例:
<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]">
この方法でメールを送信すると、リンク切れのメールが生成されます。
Outlook 2007を電子メールクライアントとして使用し、Wordを電子メールエディターとして使用し、RTF([オプション]タブ、[形式]タブグループ)に切り替えると、レイアウトが保持され、画像がインライン化されます。
プログラムでこれを行うには、次の方法があります。
var oldFormat = objMail.BodyFormat;
objMail.BodyFormat = Outlook.OlBodyFormat.olFormatRichText;
objMail.BodyFormat = oldFormat;
フォーマットが失われ、画像がマングルされます(画像は[image]
画面上のリンクマーカーになり、クリック可能になりますが、画像は表示されなくなります)。MailItem.BodyFormatプロパティのドキュメントに、「プロパティをRTFからHTMLに、またはその逆に切り替えると、すべてのテキスト形式が失われるBodyFormat
」と記載されていることを考えると、これは驚くべきことではありません。
残念ながら、を作成するときに設定される読み取り専用プロパティであるため、のType
それぞれAttachment
のをに変更する簡単な方法はないようです。MailItem.Attachements
OlAttachmentType.olByValue
Attachment
頭に浮かぶアプローチは、HTMLをウォークし、
タグをマーカーに置き換え、プログラムで<img>
MailItem
テキストをウォークし、のを挿入することOutlook.Attachment
ですType
OlAttachmentType.olByValue
。
別のオプションは、使用するリンクを変換<img>
し、参照されたIDを持つ添付ファイルとして画像を追加することです。src="cid:uniqueIdN"
それで、質問に...理想的には償還のようなサードパーティのツールに入ることなく、リンクされた画像を埋め込み画像に変換する方法はありますか?RTFに変換すると結果が得られますが、そのようにすることは決して前提条件ではなく、明らかに忠実度を失う可能性があります。