C# 如何打开Outlook新邮件窗口c

C# 如何打开Outlook新邮件窗口c,c#,email,.net-4.0,office-interop,outlook-2003,C#,Email,.net 4.0,Office Interop,Outlook 2003,我正在寻找在Outlook窗口中打开新邮件的方法 我需要以编程方式填写:发件人、收件人、主题、正文信息,但请将此新邮件窗口保持打开状态,以便用户可以验证内容/添加内容,然后作为普通Outlook邮件发送 发现: Process.Start(String.Format( "mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}", address, subject, cc, bcc, body)) 但是我的用户没有多个邮箱的选

我正在寻找在Outlook窗口中打开新邮件的方法

我需要以编程方式填写:发件人、收件人、主题、正文信息,但请将此新邮件窗口保持打开状态,以便用户可以验证内容/添加内容,然后作为普通Outlook邮件发送

发现:

Process.Start(String.Format(
 "mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}", 
  address, subject, cc, bcc, body))
但是我的用户没有多个邮箱的选项


有什么建议吗?

你不能用mailto做这件事。您的客户必须选择他们发送邮件的来源帐户(默认为他们的默认帐户),或者您必须在发送电子邮件时提供邮件表单并设置邮件头。

我终于解决了这个问题。 下面是一段使用Outlook interops解决我的问题的代码

Outlook.Application oApp    = new Outlook.Application ();
Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem ( Outlook.OlItemType.olMailItem );
oMailItem.To    = address;
// body, bcc etc...
oMailItem.Display ( true );

这是我试过的。它按预期工作

此应用程序用于添加收件人、添加抄送和添加主题以及打开新的邮件窗口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using Outlook = Microsoft.Office.Interop.Outlook;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButtonSendMail_Click(object sender, EventArgs e)
    {
        try
        {
            List<string> lstAllRecipients = new List<string>();
            //Below is hardcoded - can be replaced with db data
            lstAllRecipients.Add("sanjeev.kumar@testmail.com");
            lstAllRecipients.Add("chandan.kumarpanda@testmail.com");

            Outlook.Application outlookApp = new Outlook.Application();
            Outlook._MailItem oMailItem = (Outlook._MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
            Outlook.Inspector oInspector = oMailItem.GetInspector;
           // Thread.Sleep(10000);

            // Recipient
            Outlook.Recipients oRecips = (Outlook.Recipients)oMailItem.Recipients;
            foreach (String recipient in lstAllRecipients)
            {
                Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(recipient);
                oRecip.Resolve();
            }

            //Add CC
            Outlook.Recipient oCCRecip = oRecips.Add("THIYAGARAJAN.DURAIRAJAN@testmail.com");
            oCCRecip.Type = (int)Outlook.OlMailRecipientType.olCC;
            oCCRecip.Resolve();

            //Add Subject
            oMailItem.Subject = "Test Mail";

            // body, bcc etc...

            //Display the mailbox
            oMailItem.Display(true);
        }
        catch (Exception objEx)
        {
            Response.Write(objEx.ToString());
        }
    }
}

我知道我做不到这一点-这就是为什么我在寻找不同的选项-看到一些应用程序在管理它,所以一定是某种方式…有什么原因你不在outlook本身的应用程序中使用vbscript吗?最终,如果您愿意,您可以轻松地从c启动outlook应用程序,在outlook中有一条在启动时运行的规则,该规则可以从vbscript宏为您填充该规则。当您希望在gui中编辑它时,我的问题仍然是:您是否需要一个特定于c的解决方案,或者您只是在认为必须使用c时才提出问题?当我在Outlook未打开的情况下运行类似的操作时,Outlook会打开,我会看到模式电子邮件对话框,然而,一旦用户点击“发送”,并且电子邮件被卡在发件箱中,Outlook就会立即关闭。是否有人有此问题?此问题需要哪些程序集/引用?谢谢,只是希望interops@Taersious在我的计算机上,互操作文件位于以下位置:C:\Program Files x86\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Office.interop.Outlook.dll,我通过在VS.XHow中的引用管理器中搜索Outlook的框架程序集,将其添加为引用。如何取消发送如果用户使用outlook取消按钮取消,则发送电子邮件?该代码只会生成一个新的电子邮件窗口,其中填充了“收件人:”和“主题”字段并显示它。这取决于用户是否发送电子邮件,因此,如果电子邮件窗口关闭,则不会发送电子邮件。