System.Diagnostics.Process.Start for mailto无法在测试服务器上运行

时间:2010-12-02 16:02:18

标签: .net iis mailto

在客户请求(遗憾地),他们希望他们的请求表单提示最终用户的本地电子邮件客户端。他们不想在那里配置SMTP或任何东西。

我遇到了一个问题,它在我的本地IIS上工作,但似乎根本不在我们的测试服务器上运行。日志中不会显示任何错误,并且不会弹出撰写电子邮件以进行发送。

有什么想法吗?我已经看过安全性和配置,但除了操作系统本身之外没有发现任何差异。 XP Pro -vs-Server。

var mailToLink = "mailto:" + (string)HttpContext.GetGlobalResourceObject ("Portal", "mailToUnInst") + "?subject=" + (string)HttpContext.GetGlobalResourceObject("Portal", "admnTitlUnInst") + " request for " + (string)HttpContext.GetGlobalResourceObject("Portal", "admnTerm") + " " + term.Text + " on " + dtUnInst.Text + "&body=";

mailToLink += (string)HttpContext.GetGlobalResourceObject("Portal", "admnTerm") + " " + term.Text + "%0D%0A"
                    + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnLoc") + " " + loc.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnAddr1") + " " + addr1.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnAddr2") + " " + addr2.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnCity") + " " + city.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnSt") + " " + st.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnZip") + " " + zip.Text + "%0D%0A"
                    + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnAtmType") + " " + atm.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnDtUnInst") + " " + dtUnInst.Text + "%0D%0A"
                    + (string)HttpContext.GetGlobalResourceObject("Portal", "admnRsn") + " " + resn.Text + "%0D%0A"
                    ;

try
{
    System.Diagnostics.Process.Start(mailToLink);
}
catch
{
  //error log process
}

所有帮助非常感谢

2 个答案:

答案 0 :(得分:2)

首先要尝试:命令行会发生什么?

start mailto:foo@xyz.com

这会启动邮件客户端吗?如果没有,那么它与.NET无关。 (它在我的上网本上也不起作用,但后来我从未在那里设置邮件客户端......)

答案 1 :(得分:2)

也许我弄错了,但你想在服务器上调用Process.Start来启动用户的本地电子邮件客户端吗?这不起作用(嗯,仅当您的Web服务器在适当的上下文中在本地计算机上运行时才有效);你应该在你的网页中使用mailto-links:

<a href="mailto:user@example.com?subject=MySubject&body=Hello%20World">Click to send an email</a>

<强>更新

  

他们不想在那里配置SMTP或任何东西。

无论您是打算使用电子邮件客户端工具还是.NET类,如果没有SMTP服务器,您将无法发送电子邮件。您应该告诉您的客户端需要配置,可能会在您的web.config中存储STMP服务器值,并按照here所述发送电子邮件。