【问题标题】:Open client mail Outlook with "mailto" work only in debug mode but not after deployed on "localhost"使用“mailto”打开客户端邮件 Outlook 仅在调试模式下工作,但在部署到“localhost”后不起作用
【发布时间】:2012-11-03 21:09:30
【问题描述】:

您好,这是我一段时间以来面临的问题。我不明白为什么,但是在我的帖子 localhost 上部署我的 Web 应用程序后,打开电子邮件客户端不起作用。但是,一切都在 Visual Studio 的调试模式下工作!

提前感谢您的帮助;-)

这是我的简单代码:

try
{
    string dataBaseName = string.Empty;
    string serverName = ttbx_ServerName.Text;
    //get item from radcombobox to make the body message
    foreach (RadComboBoxItem item in cbx_DbName.Items)
    {
        if (item.Checked)
        {
            dataBaseName += "[#] : " + item.Text + "\n";
        }
    }

    string Body = "Last name: " + ttbx_YourName.Text + "\nFirst name: " + ttbx_YourFirstName.Text + "\nServer Name: " + serverName + "\nDataBase(s) name: \n" + dataBaseName + "\nSID: " + getMd5Hash(ttbx_sidSqlServer.Text);
    string command = "mailto:register@arms.ch?subject=A.R.M.S%20Customer%20Key%20Request&body=" + Body.Replace("\n", "%0D%0A");
    Process.Start(command);
}
catch (Exception)
{
    lbl_Error.ForeColor = System.Drawing.Color.Red;
    lbl_Error.Text = "No smtp mail client found , please send manually the informations";
    lbl_Error.Visible = true;
}

【问题讨论】:

  • 认真的吗?您想在 Web 服务器而不是客户端上打开邮件客户端?
  • 只想一键打开邮件客户端。

标签: c# asp.net email smtp mailto


【解决方案1】:

您无法在客户端上执行流程 (Process.Start),因为它将通过 Web 界面。它可以在调试中工作,因为它会在您的本地计算机上启动进程,但不适用于“真实”客户端。

相反,您必须像这样在浏览器中显示 mailto 链接:

<a href="mailto:admin@domain.com?subject=" + subjectFromCode + " id="email-link">Send Email</a>

编辑

如果你想以编程方式运行它,你可以通过 jquery 来完成:

$(document).ready(function(){
   $("#email-link").click();
});

【讨论】:

    【解决方案2】:

    部署后,Process.Start 将尝试在 IIS 进程正在调整的任何帐户的用户帐户下运行电子邮件客户端。这很可能与登录的用户帐户不同,因此您不会看到电子邮件客户端运行。

    老实说,我不完全确定您为什么要尝试从 Web 应用程序运行电子邮件客户端,我很想知道它是如何工作的。

    如果您希望网站用户看到电子邮件客户端正在运行,您需要在客户端的实际网页中使用 mailto HTML 元素。

    使用 asp.net 可以是这样的控件

    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl = "" Text = ""></asp:HyperLink>
    

    然后在后面的代码中,在 PageLoad 中,您可以使用所需的电子邮件地址、主题和正文设置 NavigateUrl。

    【讨论】:

    • 那么你建议我在 html 中使用带有“mailto”的 javascript 调用?确保打开和调用功能是客户端而不是服务器端?对不起,我的英语不太好
    • 你需要一个 mailto,就像 Amo2501 的回答一样。但是你需要在服务器端生成它,这样你就可以添加电子邮件的主题和正文。
    • 是的,非常感谢。我已经完成了创建一个“超链接”一个 Html 页面。在 hyperLink_mailto.NavigateUrl = command 之后;并调用 javascript 方法自动点击超链接 $("#email-link").click();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2021-12-07
    • 2020-12-20
    相关资源
    最近更新 更多