2009-06-12 28 views
15

C'è un modo per rendere il client di posta elettronica (Outlook) accetta caratteri speciali provenienti dal collegamento mailto in html? Sto cercando di avere un collegamento mailto con caratteri tedeschi nel corpo, ma in Outlook ottengo solo caratteri strani.mailto caratteri speciali

Grazie

+1

Ho lo stesso problema . Puoi scegliere un aswer o postare il tuo? – AyexeM

risposta

0

suona come è necessario la pagina che contiene il link mailto di essere nella codifica che Outlook si aspetta. Senza saperne di più sulla situazione, proverei a codificare la pagina in UTF-8 e ISO-8859-1.

Il "più circa la situazione" pertinente sarebbe quello che appaiono caratteri strani e che cos'è la codifica della pagina al momento.

3

Penso che l'utilizzo di un metodo urlencode dovrebbe fare ciò che stai cercando. JavaScript ha metodi .encodeURI() su oggetti stringa e .NET ha il metodo HttpUtility.UrlEncode.

Che lingua stai usando?

+0

Sto usando UrlEncode con Razor. Hai qualche idea su questo @ John? http://stackoverflow.com/questions/33097643/mailto-link-encoding-in-mvc-razor –

19

Ho appena trascorso 2 giorni a indagare su questo problema. Il nostro problema era che i collegamenti mailto: sulle nostre pagine web codificate utf-8 non funzionavano per gli utenti di Outlook se la stringa subject = conteneva caratteri non ascii, come ad esempio caratteri norvegesi. Un esempio è: "mailto: [email protected]? Subject = julegløgg og fårikål"

Da quanto ho appreso finora, Outlook semplicemente non gestisce nient'altro che caratteri ASCII e iso-8859-1. Quindi, quando provi a cliccare sul link mailto sopra (o da IE o Firefox), Outlook non riesce a decodificare i caratteri, lasciando il soggetto rotto e contenente caratteri "strani".

Quindi il passo successivo era provare a ricodificare le pagine in ISO-8859-1. Quello che abbiamo fatto è stato quello di sostituire il collegamento mailto originale sulla pagina utf-8 con un link ad un -service "email-to-iso", in questo modo:

http://url.com/service.php?service=util.mailtoencode&mailto=mail%40coretrek.no%3Fsubject%3Demne+%C3%B8%C3%A6%C3%A5+emne

Questa pagina sarebbe convertire i caratteri mailto a iso-8859-1 e quindi restituisce l'intero contenuto della pagina in iso-8859-1. Un javascript nella pagina, contenente "location.href = 'mailto: ...'" è stato utilizzato per aprire automaticamente il client di posta del client.

Finora tutto sembrava ok. Funziona in realtà in Internet Explorer, sia con Thunderbird che con Outlook (testato su IE7 su WinXP con Outlook Express e TB 2).

MA il problema ora è in realtà Firefox. Sembra che Firefox non sia in grado di decodificare gli url con url contenenti caratteri trovati solo in ISO-8859-1 ma non in ASCII (come il norvegese å, rappresentato da% E5 quando codificato). Lo stesso å viene gestito correttamente se la codifica della pagina è utf-8, ma sembra che gli sviluppatori di Firefox abbiano dimenticato di testare caratteri speciali insieme al set di caratteri ISO-8859-1. Il risultato è che Firefox trasmette una stringa non decodificata (che contiene ancora% E5 intstead di å) al client di posta elettronica. E, incredibilmente, questo è gestito correttamente da Outlook (che riesce a decodificare la stringa stessa), ma NON da Thunderbird, che probabilmente ha lo stesso bug di Firefox. Se non si url codifica l'oggetto, la stringa viene passata correttamente a Thunderbird, ma non a Outlook.

Abbiamo anche provato altri metodi di codifica, come htmlentities, htmlspecialchars, codifica base64, ecc., Ma tutti falliscono in un modo o nell'altro.

Quindi, riassunte:

Pagine codifica UTF-8:

IE fallisce sempre

FF -> Thunderbird: OK

FF -> Outlook: FAIL

pagine codificati in iso-8859-1:

IE: OK

FF -> Thunderbird: non riesce se il soggetto è URL codificato, ok se non)

FF -> Outlook: Non riesce se il soggetto non è URL codificato, ok se codificato) (questo è Windows, su Ubuntu Linux FF e TB funzionano sempre bene).

Sperando questo è stato utile per gli altri che hanno lo stesso problema.

10

In PHP Penso che la funzione che funziona meglio con Outlook è rawurlencode()

+0

L'ho appena scoperto, dopo aver provato tutti i tipi di altri metodi. +1 – yuttadhammo

+0

+1, ha fatto il lavoro per me. – phemios

+0

Funziona come un fascino :-) –

2

È necessario abilitare il supporto UTF-8 per il mailto: protocollo

Dalla finestra principale di Outlook, fare clic su Strumenti -> Opzioni -> formato mail -> opzioni internazionali -> "Abilita supporto UTF-8 per mailto: protocollo".

funzione
+1

Purtroppo, quando si progetta un sito che potrebbe richiedere caratteri speciali in mailto :, non si ha il controllo sulla configurazione delle varie persone che si spera facciano clic sul collegamento. – ghoti

+0

@ghoti Still. È una soluzione funzionante. –

2

rawurlencode() funziona meglio con la prospettiva, testato con Firefox, Chrome IE &

+0

Questa è la stessa risposta fornita da Mario Chueca nel 2010. – jogojapan

+0

Funziona come un incantesimo, grazie! :-) –

1

Come yandr indicato, questo problema è un problema in corso con Outlook.

Microsoft ha published documentation che afferma che Outlook 2003 e 2007 correttamente configurati collegati a un server Exchange configurato correttamente supporteranno automaticamente Unicode, ma che non è di grande aiuto per il pubblico in generale.

Per riferimento, lo "standard" a cui si desidera fare riferimento è RFC 2047.

La soluzione che ho implementato per aggirare questa limitazione (con svedese, in realtà) è quello di utilizzare un modulo web invece di un mailto: link. Richiede più setup sul lato server, ma ti dà molto più controllo sulla procedura di contatto.

Sono sicuro che questo non è quello che volevi sentire, ma fino a quando il mondo non smetterà di usare il software rotto di Microsoft, continueremo ad aver bisogno di soluzioni alternative come questa.

0

Se si utilizza SharePoint 2010, Microsoft sembra essere a conoscenza di questo problema e ha fornito alcune funzioni per risolverlo.

Di seguito sfuggirà correttamente il link alla pagina corrente

escapeProperly (escapeProperlyCoreCore ($ (posizione) .attr ('href'), false, false, true))