【问题标题】:open outlook window to send email asp.net打开 Outlook 窗口以发送电子邮件 asp.net
【发布时间】:2012-07-29 00:17:38
【问题描述】:

我正在使用 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 库吗? 问题如何解决?

【问题讨论】:

  • 您是在尝试从网页打开 Outlook 吗??

标签: asp.net visual-studio-2010 email outlook


【解决方案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();

【讨论】:

    【解决方案2】:

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

    <A HREF="mailto:recipient@domain.com?subject=this is the subject&body=Hi, This is the message body">send outlook email</A>
    

    【讨论】:

      【解决方案3】:

      如果您使用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*/ }
              }
      

      【讨论】:

      • 目前我在localhost中运行项目,所以我的电脑不是服务器?我试过 smtp,但我想按上面说的打开 Outlook
      • 是的,实际上你的电脑就是服务器;请记住,您必须在将部署应用程序的服务器上安装 Outlook。
      • 在这种情况下,用户如何才能看到服务器上运行的 Outlook 窗口?
      • 用户看不到服务器上运行的 Outlook 窗口。如果您希望用户看到已创建的电子邮件,那么您不想在服务器上运行 Outlook;您应该在页面上使用mailto: 链接来调用用户的电子邮件客户端。
      • 不,mailto: 有效,但使用用户的默认邮件软件仅打开一封空邮件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2016-12-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多