2012-10-20 5 views
5

Nel mio Windows 8 Store, ho un tasto Invia Email su una pagina e gli utenti sono in grado di fare clic su di esso e inviateci una e-mail per alcune richieste di carattere generale.Win8/WinRT - Come aggiungere interruzioni di riga nel corpo dell'e-mail

Ho bisogno di precaricare del testo nel corpo dell'email ma non riesco a aggiungere interruzioni di riga. Ho provato Environment.NewLine e "\r\n". Nessuno di loro funziona.

var mailto = new Uri("mailto:[email protected]&subject=Hello world&body=Hi," + Environment.NewLine + "Can you please ..."); 
await Windows.System.Launcher.LaunchUriAsync(mailto); 

Quando lo eseguo, ottengo "Ciao, puoi per favore ...". L'interruzione di riga è stata omessa.

risposta

7

Prova utilizzando "%0d%0a" come interruzione di linea, come in

"Hi,%0d%0aCan you please..." 

Questo è un ASCII con codifica URL CR/LF sequenza. Questo funziona per me per l'app Mail incorporata, ma non hai alcuna garanzia particolare che possa funzionare per qualsiasi app di posta arbitraria che l'utente potrebbe installare in futuro.

+0

funziona perfettamente! Hai appena salvato la mia giornata, grazie mille !! :) –

0

Forse dovresti prendere in considerazione l'utilizzo di Share Contract per condividere i tuoi contenuti nella tua app di posta. Vantaggi: gli utenti che utilizzano il tuo software possono condividerlo con altre app, non solo con l'e-mail.

+1

Penso che il contratto di condivisione sia per uno scopo diverso. Nel mio caso voglio solo che l'utente ci risponda per e-mail. Le informazioni potrebbero essere sensibili e non dovrebbero essere condivise. :) –

+2

E potrei aggiungere che la condivisione tramite contratto mostra lo stesso identico problema, le interruzioni di riga vengono semplicemente scartate. –

5

La ragione per cui non funziona è perché si sta avviando un Uri, Uris richiede che il loro contenuto sia UrlEncoded/UrlEncodable. Nel caso di Environment.Newline ecc. Otterresti un Uri non valido.

È possibile contrastare questo urlencoding il Newline ambiente come questo:

System.Net.WebUtility.UrlEncode(Environment.NewLine) 
+0

Funziona anche! Grazie! –