2015-03-17 5 views
1

У меня возникла небольшая проблема с ссылкой mailto на ярлыке.Отказоустойчивость, когда обработчик протокола mailto отсутствует

Фактически я добавил ярлык, который содержит ссылку mailto, и на собственном пути программа попытается открыть его с помощью программы по умолчанию, которую пользователь определил.

Но на самом деле это не сработает и поднять Win32Exception, когда по умолчанию для этого протокола нет.

Так что заставить его открыть браузер, но он не работает, либо ...

Вот пример моего кода:

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    // Specify that the link was visited. 
    this.linkLabelContactEmail.LinkVisited = true; 
    try 
    { 
     // Open the default program to send an email. 
     System.Diagnostics.Process.Start("mailto:[email protected]"); 
    } 
    catch (Win32Exception) 
    { 
     // Force opening in a browser 
     System.Diagnostics.Process.Start("http://mailto:[email protected]"); 
    } 
} 

Но это не работает:/(он работает, если программа по умолчанию связана с этим протоколом)

Кто-нибудь знает, как я могу исправить эту проблему? Как заставить добавить протокол по умолчанию для ссылки mailto?


EDIT:

Я попытался это, который работал отлично! Но он по-прежнему не обрабатывает браузер linux:/Кроме того, он не работает .exe под Unix OS, как мне попробовать? (Я знаю, что светлячок является установка по умолчанию, он будет обрабатывать?)

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    // Specify that the link was visited. 
    this.linkLabelContactEmail.LinkVisited = true; 

    try 
    { 
     // Open the default program to send an email. 
     System.Diagnostics.Process.Start("mailto:[email protected]"); 
    } 
    catch (Win32Exception) 
    { 
     try 
     { 
      // Force opening in Firefox 
      System.Diagnostics.Process.Start("firefox", "mailto:[email protected]"); 
     } 
     catch (Win32Exception) 
     { 
      try 
      { 
       // Force opening in IE 
       System.Diagnostics.Process.Start("chrome", "mailto:[email protected]"); 
      } 
      catch (Win32Exception) 
      { 
       try 
       { 
        // Force opening in IE 
        System.Diagnostics.Process.Start("iexplore", "mailto:[email protected]"); 
       } 
       catch (Win32Exception) 
       { 
        MessageBox.Show(
         "Vous n'avez aucun programme par défaut de configuré pour envoyer un mail, ni aucun des 3 navigateurs (Firefox, Chrome, Internet Explorer). Nous ne pouvons donc vous aidez à envoyer ce mail...", 
         "Erreur à l'envoi du mail", 
         MessageBoxButtons.OK, 
         MessageBoxIcon.Warning, 
         MessageBoxDefaultButton.Button1 
        ); 
       } 
      } 
     } 
    } 
} 

ответ

0

Вместо добавления префикса http:// протокола, вы можете просто запустить браузер. Ваш синтаксис URL недействителен, и я сомневаюсь, что он когда-либо будет работать (Chrome не уверен, просто протестировал его).

System.Diagnostics.Process.Start("iexplore", "mailto:[email protected]"); 

Этот код открывает Internet Explorer для выполнения mailto:.

+0

@Fik: нужна помощь? Если нет, примите, пожалуйста, ответ, если он был вам полезен. –

+0

Спасибо! Как я могу справиться с этим, если я работаю под ОС Linux? Или если пользователь удаляет IE? Как я могу назвать Firefox или Chrome? Или Linux-браузер? – Fikkwix

+0

Он работает с firefox, я полагаю, он будет работать с IE, как вы отвечаете, я надеюсь, что он будет работать с Chrome, потому что он запускается, когда я пытаюсь запустить Chrome через Commande Prompt. – Fikkwix