System.Diagnostics.Process.Start для почты, чтобы не работать на тестовом сервере - PullRequest
0 голосов
/ 02 декабря 2010

По просьбе клиентов (к сожалению) они хотят, чтобы в их формах запросов было предложено указать локальный почтовый клиент для конечного пользователя. Они не хотят настраивать SMTP или что-то еще там.

Я столкнулся с проблемой, когда он работает на моем локальном IIS, но, похоже, не работает на нашем или тестовом сервере вообще. В журнале нет ошибок, а составное письмо никогда не всплывает для отправки.

Есть идеи? Я посмотрел на безопасность и конфигурацию, но не нашел никаких отличий, кроме самой ОС. XP Pro -vs- Сервер.

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 ]

2 голосов
/ 02 декабря 2010

Может быть, я ошибаюсь, но вы хотите вызвать Process.Start на сервере, чтобы запустить локальный почтовый клиент пользователя? Это не будет работать (ну, это работает, только если ваш веб-сервер работает на локальном компьютере в соответствующем контексте); вы должны использовать mailto-ссылки на ваших страницах:

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

Обновление

Они не хотят настраивать SMTP или что-то еще там.

Без SMTP-сервера вы не сможете отправлять электронную почту вообще, независимо от того, собираетесь ли вы использовать почтовый клиентский инструмент или классы .NET. Вы должны сообщить своему клиенту, что требуется конфигурация, возможно, сохранить значения сервера STMP в вашем файле web.config и отправить электронное письмо, как описано здесь .

2 голосов
/ 02 декабря 2010

Первое, что нужно попробовать: что происходит в командной строке?

start mailto:foo@xyz.com

Это запускает почтовый клиент? Если нет, то это не имеет ничего общего с .NET. (Он также не работает на моем нетбуке, но я никогда не настраивал почтовый клиент там ...)

...