[英]C# Outlook Mail With Quotes
我正在嘗試通過Outlook
發送電子郵件。 我正在使用此代碼有效。
var url = "mailto:foo@bar.com?subject=Foobar [ID_01] P1&body=somerandomtext";
Process.Start(url);
當我將“ somerandomtext”替換為TextBox1.Text
,在TextBox1.Text
有雙引號(“),Outlook響應為:
命令行參數無效。 檢查您使用的命令。
我可以只做TextBox1.Text.Replace("\\"", "'")
但必須有一種發送/自動填充雙引號的方法。
最初的建議是使用UrlEncoding
URL編碼用由十六進制轉義序列組成的字符實體等效項替換URL中不允許的字符。
這適用於雙引號,但是如果正文中有空格將轉換為“ +”
例如,如果字符串是:
this is for "testing"
使用UrlEncode
,它將被轉換為:
this+is+for+%22testing%22
上面看起來不太好。
因此,更好的解決方案是用%22手動替換雙引號。
var changedText = body.Replace("\"", "%22");
這將使輸出為:
替換字符串為Outlook中的“電子郵件地址”處理程序的完整列表可在這里 :
以下變量用於表示常用字符:
空格()%20
逗號(,)%2C
問號(?)%3F
期間(。)%2E
感嘆號(!)%21
冒號(:)%3A
分號(;)%3B
mailto處理程序的MSDN頁面具有以下其他詳細信息:
Windows Internet Explorer 7及更高版本。 您必須對mailto:地址中的所有URL保留字符進行百分比編碼。 例如,數字符號(#)用作URL中的片段標識符。 當處理諸如some#one@example.com之類的地址時,Internet Explorer僅將數字符號之前的部分復制到郵件客戶端中; 包括數字符號的片段部分將被忽略。 此行為是設計使然。
有關mailto協議的更多信息,請參見RFC2368 :mailto URL方案。
經過一些額外的測試並四處Uri.EscapeDataString
之后,似乎有一個更簡單的解決方案 -使用Uri.EscapeDataString
這樣可以處理所有必要的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.