2012-08-27 145 views
0

我正在使用Amazon Simple Email Service Java API向接收者發送郵件。 我在標籤內發送郵件正文中的URL。 我的用例要求用戶雙擊收到的URL來提示一些操作。 (如確認郵件)如何在沒有編碼的情況下在電子郵件中發送url

問題是URL在接收時被編碼。雙擊它會導致找不到頁面(404)錯誤。

原始地址http://something.com/confirm/email=abc%40hotmail.com%26regKey=somekey%26confirm=true

我使用AmazonSimpleEmailServiceClienthttp://something.com/confirm/[email protected]&regKey=somekey&confirm=true 當我雙擊郵件上的這個URL,鏈接在地址欄中顯示爲打開。代碼如下:

SendEmailRequest request = new SendEmailRequest().withSource(sourceAddress); 

String confirmationURL="http://something.com/confirm/[email protected]&regKey=somekey&confirm=true"; 

      List<String> toAddresses = new ArrayList<String>(); 
      toAddresses.add(toEmail); 

      Destination dest = new Destination().withToAddresses(toAddresses); 
      request.setDestination(dest); 

      Content subjContent = new Content().withData("Confirmation Request"); 
      Message msg = new Message().withSubject(subjContent); 

      // Include a body in both text and HTML formats 
      Content textContent = new Content().withData("Dear please go to the following URL:"+ 
        confirmationURL+"\n\n"); 

      Content htmlContent = new Content().withData("<p>Dear please go to the following URL:</p>"+ 
        "<p><a href=\""+confirmationURL+"\">"+confirmationURL+"</a></p>"); 

      Body body = new Body().withHtml(htmlContent).withText(textContent); 
      msg.setBody(body); 
      request.setMessage(msg) 

UPDATE

剛剛發現,當收件人的電子郵件是在hotmail.com這個問題只發生。爲什麼微軟總是需要做不同的事情?有人幫忙!

回答

0

使用類java.net.URLEncoder中:

String confirmationURL = URLEncoder.encode("http://something.com/confirm/[email protected]&regKey=somekey& confirm=true", "UTF-8"); 
+0

我只想做相反。它已經被編碼了。 – shashankaholic

+0

對不起,URLDecoder.decode()應該做的伎倆。 – JamesB

+0

其實編碼是在hotmail收件人。我無法解碼。 – shashankaholic

相關問題