【问题标题】:asp.net Outlook creates 2 emails instead of 1asp.net Outlook 创建 2 封电子邮件而不是 1
【发布时间】:2019-01-14 05:38:02
【问题描述】:

我使用 Asp.net WebForm 我的 Outlook 应用程序有问题。当用户想在 Outlook 中通过电子邮件从浏览器提交报告/订单时,它会创建 2 封电子邮件而不是 1 封。我真的不明白可能是什么问题。

这里是负责创建和发送邮件的部分:

//Send email
try
{
    Outlook.Application outlookApp = new Outlook.Application();
    Outlook.MailItem mailItem = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
    MailAddress to = new MailAddress(email_primary);
    MailAddress cc = new MailAddress(email_cc);
    mailItem.To = to.ToString();
    mailItem.CC = cc.ToString();

    mailItem.Subject = "MB Accessories Order";

    mailItem.Importance = Outlook.OlImportance.olImportanceNormal;
    mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
    mailItem.Body = "Dear Colleagues, Please find below my MB Accessories & Collection enquiry for MBCME price (VAT included) and availability. FullName:" + Fullname_converted + " Items:" + joinedData + "";
    mailItem.Display(false);
    //mailItem.Send();
    Response.Write("E-mail sent!");
}
catch (Exception eX)
{
    throw new Exception("cDocument: Error occurred trying to Create an Outlook Email" + Environment.NewLine + eX.Message);
}

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 双击触发功能两次?你调试了吗?被击中两次了吗?
  • 一般来说,尝试从 Web 应用程序自动化 Office 应用程序不受支持,并且往往会产生各种不错的副作用。这很可能就是其中之一。
  • 要从 ASP.Net WebForms 应用程序发送电子邮件,要么采用手动路由并使用 SmtpClient(或更现代的东西)构建它,要么通过 SendGrid 等外部​​服务发送它。
  • @Paul-Jan 我想使用 Smtp,但我不使用它,因为我们仅在 Intranet 中使用此 Web 应用程序。 :)

标签: c# asp.net email webforms outlook


【解决方案1】:

我通过实现而不是 html 按钮解决了这个问题 而不是:

<button id="idbutton" runat="server" onserverclick="btn_submit_Click">Submit</button>

我用过

<asp:Button runat="server" Text="Submit" OnClick="btn_submit_Click" />

现在可以正常使用了

【讨论】:

  • 啊,很好的发现!太糟糕了,你没有分享那部分代码。可能是副本。 stackoverflow.com/questions/1562580/… ,但是当您使用经典的 asp.net 网络表单并且没有具体理由选择其他方式时,无论如何使用 asp:button 是最佳实践。
  • 它在您的开发机器上运行良好。在生产中,它将尝试在没有用户查看新创建的消息的情况下在服务器上运行脚本..
  • @DmitryStreblechenko 嗨,Dmitry,你是对的,我的代码在服务器上不起作用。我有一个错误“由于以下错误,检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80040154 类未注册(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。”跨度>
  • @DmitryStreblechenko 我找不到解决方案,如何在服务器中使用 Outlook?
【解决方案2】:

您无法在服务器上运行该代码。您的选择是

  1. 客户端的 JS - 必须是 IE,并且必须信任该站点才能创建 COM 对象。

  2. 在服务器端创建 EML (MIME) 消息并让用户下载 - Outlook 将很乐意打开并显示它。要确保邮件处于未发送状态,请将X-Unsent MIME 标头设置为 1。

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多