Given: URI (dưới hình thức của một đối tượng String):Làm thế nào để (chính xác) tạo URL mailto (URI) trong Java?
String email1 = "[email protected]";
// legal email address according to wikipedia [1]
String email2 = "\"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a\"@example.org";
các/cách chính xác nhất để tạo ra một mailto là gì?
tôi đã cố gắng:
String uri = new URI("mailto", the_email_address, null).toString();
này là gần nhất tôi nhận, nhưng nó không mã hóa các dấu hỏi ở phần cục bộ của địa chỉ email, nhưng theo RFC 6068 nó nên (?). Nó cũng không thành công trên các ví dụ trong RFC, như "[email protected]"@example.org hoặc không [email protected].
[1] Valid_email_addresses examples
PS: Có một số thông tin hữu ích trong Should plus be encoded in mailto: hyperlinks?
tôi giải quyết cho điều này như một giải pháp:
import org.apache.http.client.utils.URIBuilder;
// from Apache HttpClient
// maven group: org.apache.httpcomponents artifact: httpclient
String emailURL = new URIBuilder().setScheme("mailto").setPath(the_email_address).toString();
Tôi nhận thấy rằng ví dụ của bạn đang tạo URI từ email1 tuy nhiên nó không có dấu chấm hỏi, bạn có ý định sử dụng email2 không? –
Dấu hỏi nằm trong ví dụ khác. Nhận xét đó là chung: phương thức đã sử dụng không hoạt động nếu địa chỉ thư có dấu chấm hỏi trong đó. –
@ DavidBalažic là bạn không thể sử dụng Apache commons URI builder? hoặc là yêu cầu ur khác nhau? –