1

您好,这是我一段时间以来面临的问题。我不明白为什么,但是在我的帖子 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;
}
4

2 回答 2

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();
});
于 2012-11-15T10:04:56.820 回答
1

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

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

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

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

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

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

于 2012-11-15T09:40:08.933 回答