2017-07-19 51 views
1

我想通過Outlook發送電子郵件。我正在使用這個工作的代碼。C#Outlook郵件與行情

var url = "mailto:[email protected]?subject=Foobar [ID_01] P1&body=somerandomtext"; 
Process.Start(url); 

當我更換「somerandomtext」有,比方說TextBox1.Text並有雙引號(「)內TextBox1中,Outlook中的響應與:

命令行參數無效檢查命令你正在使用。

我只是做TextBox1.Text.Replace("\"", "'"),但必須有發送/自動填充雙引號的方式。

+0

謝謝,它現在正在工作。 –

回答

0

最初的建議是使用UrlEncoding

link

URL編碼替換未在與由十六進制轉義序列的字符實體當量的URL允許的字符。

這將工作的優良雙引號,但如果有在正文空間將被轉換爲「+」

對於例如,如果字符串是:

this is for "testing" 

使用UrlEncode,將它轉換爲:

this+is+for+%22testing%22 

enter image description here

上面看起來不太好。

所以更好的解決方案是用%22手動替換雙引號。

var changedText = body.Replace("\"", "%22"); 

這將使輸出爲:

enter image description here

替換字符串的完整列表中選擇 「電子郵件地址」 處理程序用於Outlook可here

以下變量用於表示常用字符:

空間()%20

逗號(,)%2C

問號(?)%3F

句號(。)%2E

感嘆號(!)%21

冒號(:)%3A

分號(;)%3B

mailto handler的MSDN頁具有這些額外的細節:

視窗Internet Explorer 7和後來。您必須對郵件地址中的所有URL保留字符進行百分比編碼。例如,數字符號(#)被用作URL中的片段標識符。在處理諸如[email protected]之類的地址時,Internet Explorer僅將數字符號部分複製到郵件客戶端;包括數字符號的片段部分被忽略。此行爲是設計使然。

有關mailto協議的詳細信息,請參見RFC2368:mailto URL方案。

經過一些額外的測試和谷歌搜索周圍,似乎有一個更簡單的solution - 使用Uri.EscapeDataString

handles所有必要的轉換。