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:
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
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%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.
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.