在本文中,将探讨如何开发一个Outlook插件,该插件旨在帮助非IT技术人员编辑圣诞邮件,并发送带有自定义消息的邮件。这个插件使用C#语言在Visual Studio 2012和Office 2010环境下开发。
为了使非IT技术人员能够轻松编辑和发送圣诞邮件,开发了一个Outlook插件。该插件通过在Outlook的Ribbon上添加一个按钮来实现,用户可以通过这个按钮打开一个表单,输入消息内容,编辑图片,并将消息发送出去。
首先,创建一个新的Office - Outlook 2010 Add-in项目。然后添加一个Ribbon(添加新项目 - Ribbon(Visual Designer))。Ribbon自带一个Tab和一个Group,用于组织Ribbon上的控件。接下来,修改Tab和Group的标签,并设置Tab的ControlIdType属性为Custom,Ribbon的RibbonType属性为Microsoft.Outlook.Explorer。
现在,点击Start,它将打开Outlook并显示Ribbon。使用Toolbox,向Group中添加一个Office Ribbon Control Button。如果需要,可以为按钮添加图片,并在按钮上写上标签。
接下来,向项目中添加一个新的表单。在按钮上添加代码,以便在点击按钮时显示表单。以下是Ribbon.cs的代码示例:
public partial class MyOutlookAddIn
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
ShowForm();
}
private Form1 form1 = null;
// 这是显示表单的方法
private void ShowForm()
{
if (form1 == null)
{
// 使用Global类变量获取Form
form1 = new Form1(Globals.ThisAddIn.Application);
}
form1.ShowDialog();
}
}
绘制一个表单,用于捕获所有必要的信息(主题、消息内容、电子邮件等)。向项目中添加一个图片,该图片将作为邮件的背景。在属性中,设置复制到输出目录 - 如果更新则复制。
确保更改表单的构造函数,以在构造函数中接收Outlook应用程序。以下是Form1类的代码示例:
public partial class Form1 : Form
{
protected Microsoft.Office.Interop.Outlook.Application App;
public Form1(Microsoft.Office.Interop.Outlook.Application _app)
{
App = _app;
InitializeComponent();
}
}
在发送按钮的点击事件中,它将使用以下代码将消息内容写入图片的特定位置:
// 创建位置点
PointF location = new PointF(137f, 150f);
// 获取位于插件安装文件夹中的图片
string imageFilePath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "picture.png");
// 将图片转换为可管理的格式(Bitmap)
Bitmap bitmap = (Bitmap)Image.FromFile(imageFilePath);
using (Graphics graphics = Graphics.FromImage(bitmap))
{
using (Font arialFont = new Font("Comic Sans", 2))
{
if (!string.IsNullOrWhiteSpace(to))
{
// 在图片上绘制
graphics.DrawString(to + ", ", arialFont, Brushes.CornflowerBlue, location);
}
}
}
// 然后使用另一个名称保存图片,避免被覆盖
imageFilePath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "picture1.png");
bitmap.Save(imageFilePath);
然后发送图片:
private void SendMessage(Microsoft.Office.Interop.Outlook.Application oApp, List bodyMessage, string stringBodyMessage, string receiver, string subject, string from, string to)
{
try
{
// 创建一个新的邮件项。将表单上接收到的应用程序作为参数传递
Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
// 添加邮件正文
oMsg.HTMLBody = stringBodyMessage;
// 添加附件
string sDisplayName = "MyAttachment";
int iPosition = (int)oMsg.Body.Length + 1;
int iAttachType = (int)Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue;
// 现在附加文件
prepareMessage(bodyMessage, from, to);
clearFieldsAndClose();
string thePath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "picture1.png");
Microsoft.Office.Interop.Outlook.Attachment oAttach = oMsg.Attachments.Add(thePath, iAttachType, iPosition, sDisplayName);
// 主题行
oMsg.Subject = subject;
// 添加收件人
Microsoft.Office.Interop.Outlook.Recipients oRecips = (Microsoft.Office.Interop.Outlook.Recipients)oMsg.Recipients;
// 在下一行中更改收件人(如果需要)
Microsoft.Office.Interop.Outlook.Recipient oRecip = (Microsoft.Office.Interop.Outlook.Recipient)oRecips.Add(receiver);
oRecip.Resolve();
// 发送
oMsg.Send();
// 清理
oRecip = null;
oRecips = null;
oMsg = null;
oApp = null;
}
// 结束try块
catch (System.Exception ex)
{
System.Windows.Forms.MessageBox.Show("Ocorreu um erro " + ex.Message);
}
// 结束catch
}
点击文件 => 添加 => 新建项目 => 其他项目类型 => 安装和部署 => Install shield。如果没有Install shield,可以从这里下载。
使用项目助手填写应用程序信息,安装要求。特别注意应用程序文件。点击添加项目输出并添加主输出。然后添加文件清单和文件vsto,它们都位于构建后创建的bin文件夹中。也要添加图片。
安装的最后一步是在应用程序注册表中添加注册表。最初,它可能在HKEY_CURRENT_USER下是空白的,但是如果点击左侧的注册表,它将重定向到一个视图,可以在其中拖放。
将顶部视图中的Software - Microsoft - Office - Outlook - Addins - Add in的名称从顶部视图拖放到HKEY_CURRENT_USER下的底部视图。这个视图最初将显示开发路径。需要编辑Manifest条目为[INSTALLDIR],以便它使用安装路径运行。(查看前一个图像。)