C# 使用“打开客户端邮件Outlook”;mailto";仅在调试模式下工作,但在部署到";“本地主机”;

C# 使用“打开客户端邮件Outlook”;mailto";仅在调试模式下工作,但在部署到";“本地主机”;,c#,asp.net,email,smtp,mailto,C#,Asp.net,Email,Smtp,Mailto,你好,这是我的问题,我要面对一段时间。我不明白为什么,但是在我的post localhost上部署了我的web应用程序之后,打开电子邮件客户端不起作用。但是,从VisualStudio开始,一切都在调试模式下工作 提前感谢您的帮助;-) 以下是我的简单代码: try { string dataBaseName = string.Empty; string serverName = ttbx_ServerName.Text; //get item from radcombo

你好,这是我的问题,我要面对一段时间。我不明白为什么,但是在我的post localhost上部署了我的web应用程序之后,打开电子邮件客户端不起作用。但是,从VisualStudio开始,一切都在调试模式下工作

提前感谢您的帮助;-)

以下是我的简单代码:

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

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

老实说,我不完全清楚你为什么要尝试从一个web应用程序运行一个电子邮件客户端,我很难看到这将如何工作

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

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

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


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

您无法在客户端上执行流程(process.Start),因为它将通过web界面。它在调试中工作,因为它在本地计算机上启动进程,但不能与“真实”客户端一起工作

相反,您必须在浏览器中显示mailto链接,如下所示:

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

认真地您想在web服务器上打开邮件客户端而不是客户端?只想单击按钮打开邮件客户端。然后您建议我使用html中带有“mailto”的javascript调用?确保打开和调用功能是客户端而不是服务器端?对不起,我英语说得不是很好。你需要一封邮件,就像Amo2501的回答一样。但是你需要在服务器端生成它,这样你就可以添加电子邮件的主题和正文。是的,非常感谢。我已经创建了一个Html页面的“超链接”。在hyperLink_mailto.NavigateUrl=命令之后;并调用javascript方法来自动单击超链接$(“#电子邮件链接”)。单击();
$(document).ready(function(){
   $("#email-link").click();
});