在 VSTO 中使用 MailItem.PrintOut 时如何更改打印首选项

How to change print preferences when using MailItem.PrintOut in VSTO

我正在尝试自动打印来自 VSTO 插件的所有传入电子邮件的第一页。 必须保留格式,据我所知,就实际打印而言,调用 MailItem.PrintOut() 是我唯一的途径。 这是我到目前为止的位置。

using Outlook = Microsoft.Office.Interop.Outlook;
/*
...
*/
private void ProcessMailItem(Outlook.MailItem mailItem)
{
        PrinterSettings ps = new PrinterSettings();
        PrintDialog pd = new PrintDialog();
        pd.AllowSomePages = true;
        pd.AllowSelection = true;
        ps.PrintRange = PrintRange.SomePages;
        ps.FromPage = 1;
        ps.ToPage = 2;
        //ps.MinimumPage = 1;
        //ps.MaximumPage = 2;
        mailItem.PrintOut();
}

忽略设置并使用默认设置打印电子邮件。

我暂时采用的解决方案是发送密钥以获取打印首选项,但如果可能我想更改它。

private void ProcessMailItem(Outlook.MailItem mailItem)
{
  SendKeys.Send("%f");
  SendKeys.Send("p");
  SendKeys.Send("r");
  /*
  TABing to page selection
  TABing to OK
  */
}

任何帮助将不胜感激。

Outlook 无法更改任何打印机设置。最好以 DOC / HTML /RTF 格式导出消息,在 Word 中以编程方式打开文件,然后在那里打印它。