c#嵌入图像在新的Outlook邮件项目从独立应用程序

本文关键字:项目 应用程序 独立 Outlook 图像 | 更新日期: 2023-09-27 18:09:02

从独立应用程序将图像嵌入新的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

c#嵌入图像在新的Outlook邮件项目从独立应用程序

我能够解决我的问题,依靠VBS脚本从应用程序内调用,它很简单,解决了我的问题。

创建附件并使用Attachment.PropertyAccessor设置PR_ATTACH_CONTENT_ID属性(DASL名称"http://schemas.microsoft.com/mapi/proptag/0x3712001F")

你的HTML正文需要通过cid:

引用该图像附件
img src="cid:xyz"

其中xyzPR_ATTACH_CONTENT_ID属性的值。

查看现有的消息与OutlookSpy(我是它的作者-点击IMessage按钮)。

相关文章: