2

スタンドアロン アプリケーションから新しい Outlook メール アイテムに画像を埋め込む最良の方法は何ですか。Outlook 用のアドインを構築していません。

既存の画像を新しい電子メール アイテムに埋め込むか添付しようとしています。私は多くの情報源を読んで調べましたが、これらのほとんどは Exchange に関連付けられているか、Outlook の AddIn メソッドを使用しています。

ユーザーは、新しい電子メールに埋め込まれた画像を確認し、「To:」フィールドに入力するだけで済みます。アプリケーションからも、新しい電子メール メッセージに件名を事前入力したいと考えています。

以下のコード: (以下でキャプチャした画像を Outlook メールに添付しようとしています!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Mail;
using System.Net.Mime;



namespace While_You_Were_Out
{
    public partial class main : Form
    {
        public main()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Normal;
            Show();

            Rectangle l = Screen.PrimaryScreen.WorkingArea;
            //Sets Position Manual all other Dialogs are set within parent center area.
            this.StartPosition = FormStartPosition.Manual;
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);
        }

        private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            new AboutDialog().ShowDialog(this);
        }

        private void trayIcon_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            WindowState = FormWindowState.Normal;
            Show();

            Rectangle l = Screen.PrimaryScreen.WorkingArea;
            //Sets Position Manual all other Dialogs are set within parent center area.
            this.StartPosition = FormStartPosition.Manual;
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);
        }

        private void trayRightClickMenu2_Opening(object sender, CancelEventArgs e)
        {

        }

        private void toolStripMenuExit_Click(object sender, EventArgs e)
        {
            //Exit Application
            Application.Exit();
        }

        private void toolStripMenuOpen1_Click(object sender, EventArgs e)
        {
            WindowState = FormWindowState.Normal;
            Show();

            Rectangle l = Screen.PrimaryScreen.WorkingArea;
            //Sets Position Manual all other Dialogs are set within parent center area.
            this.StartPosition = FormStartPosition.Manual;
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Hides to System Tray
            this.Hide();
            trayIcon.Visible = true;
            //Dispose();
        }

        private void button2_Click(object sender, EventArgs e)
        {


        }

        private void sendNotificationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            /* Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
             panel1.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
             bmp.Save(@"C:\Razor\wywo_notification.jpg");
             bmp.Dispose();*/

            SaveAsBitmap(panel1, @"C:\Users\Razor\wywo_notification.jpg");
        }



        private void clearFormToolStripMenuItem_Click(object sender, EventArgs e)
        {
            txtBox6.Text = string.Empty;
            txtBox8.Text = string.Empty;
            txtBox9.Text = string.Empty;

        }

        public void SaveAsBitmap(Control control, string fileName)
        {
            //get the instance of the graphics from the control
            Graphics g = control.CreateGraphics();

            //new bitmap object to save the image
            Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);

            //Drawing control to the bitmap
            panel1.DrawToBitmap(bmp, new Rectangle(0, 0, control.Width, control.Height));

            bmp.Save(fileName);
            bmp.Dispose();

        }



        private void sendToOutlook_Click(object sender, EventArgs e)
        {  


        }



    }

}

VBSスクリプトで機能を実行できました:

Set olApp = CreateObject("Outlook.Application")
Set olMsg = olApp.CreateItem(0)

With olMsg
  .To = "test@test.com"
  '.CC = "cc@test.com"
  '.BCC = "bcc@test.com"
  .Subject = "Subject"

.HTMLBody = "<html><p>This is a picture.</p>" & _
                   "<img src='cid:wywo_notification.jpg'>"
  '.Body = "<IMG align=baseline border=0 hspace=0 src=cid:myident>"
  '.Attachments.Add "C:\users\doej\wywo_notification.jpg" 
   '.Attachments.Add "C:\users\doej\wywo_notification.jpg"


  .Display
End With
4

2 に答える 2

1

アプリケーション内から呼び出された VBS スクリプトに依存することで問題を解決できました。これは簡単で、問題を解決しました。

于 2013-05-08T00:39:46.077 に答える
0

あなたの既存のコードは何ですか?添付ファイルを作成し、Attachment.PropertyAccessor を使用して PR_ATTACH_CONTENT_ID プロパティ (DASL 名 " http://schemas.microsoft.com/mapi/proptag/0x3712001F ") を設定します。

HTML 本文は、cid を介してその画像添付ファイルを参照する必要があります。

img src="cid:xyz"

xyz は PR_ATTACH_CONTENT_ID プロパティの値です。

OutlookSpyで既存のメッセージを確認します ([ IMessage ] ボタンをクリックします)。

于 2013-04-14T21:33:37.853 に答える