2016-02-12 102 views
0

當我在電子郵件正文中添加HTML URL時,它不會重定向到首選位置。這是片段,請告訴我我做錯了什麼。Java電子郵件嵌入URL

#location variable contains the URL 
StringBuffer body = new StringBuffer("<html><body>Hi, <br/><br/>"); 
body.append("<p>"+cmts+"</p>"); 

#both the ways are not working, how to construct proper URL 
body.append("<br/><br/><a href=\"+location+\">" + location + "</a><br/>"); 
body.append("<br/><br/><a href="+location+">" +location + "</a><br/>"); 

#this is working as link only in OUTLOOK, but in other mail client it shows as plain text 
body.append("<br/><br/>"+location); 

網址:

http://host:port/weebApp/report/viewer.html#%2Fpublic%2FSamples%2FDashboards%2_FSample_report

+0

您可以添加您正在使用的URL的示例嗎? – FuePi

+0

首先檢查這個沒有javaMail的URL是否正常工作?似乎我沒有工作 – Ghayel

+0

@Ghayel在代碼片段中提到Last Statement,就是說它工作正常。但是當我查看Outlook以外的其他客戶端時,它顯示爲純文本bcoz,它不包含在中。我希望那個標籤在。 – GeekExplorer

回答

0

可能有很多方法可以在JavaMail的添加HREF例如:

1)InternetHeaders headers = new InternetHeaders(); headers.addHeader("Content-type", "text/html; charset=UTF-8"); String aHref = "some text\n" + text + "\n<a href='http://google.com'>google.com</a>";

2)String aHref = "some text\n" + text + "\n<a href='http://google.com'>google.com</a>"; messageBodyPart.setText(aHref,"UTF-8","html");

UPDATE:
確保內容類型設置爲htmltext/html因爲text/plain將顯示爲純文本

+0

當我通過靜態url其工作,但是當我通過變量,其中包含URL其不工作,我想我要正確地做出這個聲明'body.append(「

" + location + "
」);' – GeekExplorer

+0

使它成爲http://" + location + "
「); – Ghayel

+0

變量的值是否已經以」http://「開頭?如果是這樣,就像在頂部的例子中一樣,添加一個額外的」http://「不會在創建消息之後do message.writeTo(new FileOutputStream(「msg.txt」));並告訴我們你在msg.txt中有什麼,並且在包含它之前嘗試** not ** URL編碼。 –

0

它看起來像帶引號的問題。請嘗試:

body.append("<br/><br/><a href=\""+location+"\">" + location + "</a><br/>"); 
+0

對不起,遲到的回覆是在這裏離開的,我嘗試了你建議。我正在收到郵件成功發送msg。 Plz參考這個[鏈接](http://ibin.co/2X0emZxlFH4U)上點擊重定向到變量名稱而不是URL – GeekExplorer

+0

我的猜測是你的字符串引號與HTML中的引號混淆在一起。嘗試在HTML中使用單引號以幫助區分兩者,例如: body.append(「

" + location + "
」); – pilot7

+0

我試了@ pilot7,不工作。我是否需要對URL進行編碼,當我將URL添加到電子郵件正文時,它顯示郵件已成功發送但未發送郵件,並且如果我將它發送的郵件註釋掉。過去幾個星期卡在這裏無法解決它。 :( – GeekExplorer