Wie kann ich mit den kaufmännischen Und-Zeichen in den Mailto-Links eines Mail-Clients umgehen?

8

Ich habe eine ASP.NET/C# -Anwendung, von der ein Teil WWW-Links zu Mailto-Links in einer HTML-E-Mail konvertiert.

Zum Beispiel, wenn ich einen Link habe wie:

  

www.site.com

Es wird wie folgt umgeschrieben:

  

mailto: [email protected]? Betreff = www.site.com

Das funktioniert sehr gut, bis ich auf URLs mit kaufmännischen Und-Zeichen stoße, was dann dazu führt, dass der Betreff abgeschnitten wird.

Zum Beispiel der Link:

  

www.site.com?val1=a&val2=b

Erscheint als:

  

mailto: [email protected]? Betreff = www.site.com? val1 = a & amp; val2 = b

Was genau ich will, aber wenn es geklickt wird, erzeugt es eine Nachricht mit:

  

subject = www.site.com? val1 = a

Was die &val2 fallen gelassen hat, was als & amp; ist das Trennzeichen in einem Mailto-Befehl.
Also, ich habe verschiedene andere versucht, um dies ohne Erfolg zu arbeiten Ich habe versucht, den subject='' -Teil implizit zu zitieren, und das hat nichts getan.

Ich (in C #) ersetze '& amp;' mit & , die Live Mail und Thunderbird einfach wieder in:

verwandeln
  

www.site.com?val1=a&val2=b

Ich habe '& amp;' ersetzt mit '% 26', was zu folgendem Ergebnis führte:

  

mailto: [email protected]? Betreff = www.site.com? val1 = a% 26amp; val2 = b

In der Mail mit dem Betreff:

  

www.site.com?val1=a&val2=b

BEARBEITEN:

Als Antwort darauf, wie die URL erstellt wird, ist das viel getrimmter, aber das Wesentliche ist es. Anstelle von att.Value.Replace habe ich System.Web.HtmlUtility.URLEncode Aufrufe ausprobiert, was ebenfalls zu einem Fehler führt

%Vor%     
Serapth 08.06.2009, 15:27
quelle

4 Antworten

16

Versuchen Sie mailto: [email protected]? Betreff = www.site.com? val1 = a% 26val2 = b

& ist ein HTML-Escape-Code, während %26 ein URL-Escape-Code ist. Da es eine URL ist, ist das alles, was Sie brauchen.

EDIT: Ich dachte, so bautest du deine URL. Erstellen Sie keine URLs auf diese Weise! Sie müssen %26 dort eingeben, bevor Sie etwas anderes analysieren lassen oder es ausschließen können. Wenn Sie es wirklich so machen müssen (was Sie wirklich vermeiden sollten), dann sollten Sie nach "&" suchen und nicht nur nach "&" , da die Zeichenfolge an dieser Stelle bereits HTML-entkoppelt ist.

Im Idealfall erstellen Sie also Ihre URL ordnungsgemäß, bevor sie mit HTML-Code versehen wird. Wenn Sie es nicht richtig machen können, suchen Sie zumindest nach der richtigen Zeichenfolge anstelle der falschen. "&" ist die falsche.

    
Welbog 08.06.2009, 15:30
quelle
1

Du kannst keinen Charakter als Subjekt setzen. Sie könnten versuchen, die Funktion System.Web.HttpUtility.URLEncode für den Wert des Objekts zu verwenden ...

    
Lucas 08.06.2009 15:40
quelle
0

Die Verwendung des URL-Escapecodes %26 ist der richtige Weg.

Leider funktioniert das Android-Betriebssystem aufgrund des Bugs 8023 nicht / p>     

mojoaxel 19.07.2011 22:01
quelle
0

Was ich für meinen Fall getan habe, war die Beseitigung von & .

www.site.com/mytest.php?val1=a=b=c . Wo der 2. und 3. = wäre äquivalent zu www.site.com?val1=a&val2=b&val3=c

In mytest.php explodiere ich auf ? und explodiere dann erneut auf = .

Ein totaler Hack, den ich kenne, aber er funktioniert für mich.

    
Clyde T. 27.08.2012 20:03
quelle

Tags und Links