簡體   English   中英

C#Outlook Mail帶引號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM