По моему опыту, не используйте использование window.location для вызова почтового клиента и перенаправления на ту же страницу - это чудовище.Вместо этого используйте форму для отправки электронной почты с использованием пространства имен System.Net.Mail и объектов в нем, а затем выполните перенаправление.Если это не вариант, сохраните данные mailto в сеансе, перенаправьте и затем вызовите почтовый клиент при загрузке страницы.Единственное предостережение об этом подходе состоит в том, что window.location уничтожит все ответы, которые не были написаны, поэтому вам нужно дать странице время для загрузки с использованием события таймера, обычно около 2000 миллисекунд (если ваша страница имеет динамическийданных и имеет разное время загрузки, удачи!).
Этот фрагмент кода использует jQuery для ожидания готовности документа к использованию и добавляет 2000 миллисекунд для обеспечения написания любых ответов.
function showEmailClient(mailto)
{
$(document).ready(function ()
{
setTimeout(function ()
{
window.location = mailto;
}, 2000);
});
}
protected void Page_Load(object sender, EventArgs e)
{
if (Session["SendMail"] != null)
{
var mailto = Session["SendMail"].ToString();
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "ShowEmailClient", "showEmailClient('" + mailto + "');", true);
Session["SendMail"] = null;
}
}