2009-07-03 7 views
2

UPDATE: Ich habe gerade einen ähnlichen Beitrag hier: How do I encode "&" in a URL in an HTML attribute value?Erstellen einen mailto: URL mit einer URL im Körper iPhone SDK

Bitte beachten Sie den Code unten: ich versuche, von E-Mail-Nachricht zu senden: In meinem iPhone App Das Problem, auf das ich stoße, ist, dass ich eine URL in den Text der E-Mail einfügen möchte. Diese URL enthält zwei Und-Zeichen. Ich codiere alle Zeichenfolgen mit "stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding", aber die URL endet in meiner neuen E-Mail-Nachricht abgeschnitten nach dem ersten Et-Zeichen. IE: "http://www.mydomain.nl/?cm=79&ctime=1246572000&cid=4772" wird "http://www.mydomain.nl/?cm=79".

Jeder Vorschlag, was ich tun könnte, um zu entkommen?

NSString *eMailSubject = @"My Subject"; 
NSString *encodedSubject = [[NSString alloc] initWithString:[eMailSubject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSString *eMailBody = @"http://www.mydomain.nl?cm=79&ctime=1246572000&cid=4772"; 
NSString *encodedBody = [[NSString alloc] initWithString:[eMailBody stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSString *urlString = [[NSString alloc] initWithString:[NSString stringWithFormat:@"mailto:?subject=%@&body=%@", encodedSubject, encodedBody]]; 
NSString *encodedURL = [[NSString alloc] initWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSURL *url = [[NSURL alloc] initWithString:encodedURL]; 
[[UIApplication sharedApplication] openURL:url]; 

Antwort

0

Ist der Text der E-Mail-Nachricht HTML? Wenn dies der Fall ist, werden die meisten E-Mail-Leser und Browser versuchen, das kaufmännische Und als HTML-Entitätspräfix zu interpretieren und nach dem kaufmännischen Und-Zeichen "ctime" anstelle eines zulässigen Entitätswerts zu sehen. Geben Sie einfach den Rest der Zeichenfolge nicht weiter.

Here are some details. Versuchen Sie eine String-Substitution der '&' Zeichen mit '&' und sehen Sie, ob das hilft.

Möglicherweise möchten Sie auch das neue Messaging-Framework in OS 3.0 verwenden, mit dem Sie E-Mails direkt aus Ihrer App senden können.

+0

Das Problem hierbei ist, dass die Substitution von "&" enthält ein "&", so dass das Problem nicht gelöst wird. Wie hier vorgeschlagen (http://stackoverflow.com/questions/730101/how-doi-i-code-in-a-url-in-an-html-attribute-value) Ich sollte den Hex-Code% 26 verwenden. Irgendwie funktioniert das auch nicht für mich. – Sjakelien

+0

Sie mischen das "&" in einer URL mit "&" als HTML-Entität. Der% 26-Wert dient zum Codieren in einer URL. Wenn Sie jedoch einen Link in HTML-Inhalt einfügen möchten, müssen Sie "&" durch "&" ersetzen. Wenn der HTML-Parser das "&" sieht, sieht er im Folgenden voraus. Wenn es sich bei dem Link, den ich gepostet habe, um einen der Werte für eine legale Entität handelt, wird es mit diesem Zeichen gerendert. Wenn es ungültig ist, hört es auf (was du bekommst). Überprüfen Sie den Abschnitt über Et-Zeichen hier: http://htmlhelp.com/tools/validator/problems.html – Ramin

0

Wenn Sie echte HTML-URLs möchten, können Sie die mailto: nicht verwenden.

Sie müssen einen der folgenden Schritte aus:

  1. realisieren einen eigenen SMTP-Server
  2. Verwendung SDK 3.0 Mail-Framework (MFMailCompose ...)
+0

Das ist eine ziemlich Aussage! Haben Sie eine Argumentation dafür? – Sjakelien

+0

meist Versuch und Irrtum. In den 2.2 Tagen des iPhone habe ich etwas Code veröffentlicht, um den smtp Teil zu machen. es ist verfügbar unter: http://github.com/kailoa/iphone-smtp/tree – amattn