1

我正在使用 Visual Studio 2010 在 asp.net C# 中编写一个项目。我想编写一个函数,当用户单击一个按钮时,它会打开 Outlook 窗口以发送电子邮件。

我试过这个:

using Outlook = Microsoft.Office.Interop.Outlook;

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 );

但是编译器说命名空间 Microsoft 内没有命名空间 Office。实际上,包括 Outlook 在内的 Microsoft Office 已完全安装在我的计算机中。

我应该在 Visual Studio 中包含 Office 库吗?如何解决问题?

4

3 回答 3

3

这使用 Outlook 发送预先加载了收件人、主题和正文的电子邮件。

<A HREF="mailto:recipient@domain.com?subject=this is the subject&body=Hi, This is the message body">send outlook email</A>
于 2012-12-11T22:10:22.490 回答
1

如果使用Microsoft.Office.Interop.Outlook,则 Outlook 必须安装在服务器上(并在服务器上运行,而不是在用户计算机上运行)。

您是否尝试过使用SmtpClient

 System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage();
        using (m)
        {
            //sender is set in web.config:   <smtp from="my alias &lt;mymail@mysite.com&gt;">
            m.To.Add(to);
            if (!string.IsNullOrEmpty(cc))
                m.CC.Add(cc);
            m.Subject = subject;
            m.Body = body;
            m.IsBodyHtml = isBodyHtml;
            if (!string.IsNullOrEmpty(attachmentName))
                m.Attachments.Add(new System.Net.Mail.Attachment(attachmentFile, attachmentName));

            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
            try
            { client.Send(m); }
            catch (System.Net.Mail.SmtpException) {/*errors can happen*/ }
        }
于 2012-07-31T09:07:24.247 回答
1

而是您尝试这样,使用 Microsoft.Office.Interop.Outlook 添加;参考

        Application app = new Application();
        NameSpace ns = app.GetNamespace("mapi");
        ns.Logon("Email-Id", "Password", false, true);
        MailItem message = (MailItem)app.CreateItem(OlItemType.olMailItem);
        message.To = "To-Email_ID";
        message.Subject = "A simple test message";
        message.Body = "This is a test. It should work";

        message.Attachments.Add(@"File_Path", Type.Missing, Type.Missing, Type.Missing);

        message.Send();
        ns.Logoff();
于 2013-03-11T04:29:47.923 回答