2012-07-31 55 views
0

我有一個正在通過MySQL填充的datagridview。一列包含電子郵件,並且行將具有與該特定電子郵件地址關聯的數據。我在表單中輸入下面的代碼,這樣,當用戶點擊一個電子郵件地址的小區的新郵件窗口將打開,電子郵件地址將在郵寄地址段:從DGV CellClick事件填充電子郵件正文和主題

Private Sub MyDataGridView_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick 
    If DataGridView1.Columns(e.ColumnIndex).HeaderText = "Mech Email" Then 
     Dim selectedEMailCell As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex) 
     If selectedEMailCell.Value IsNot Nothing Then 
      System.Diagnostics.Process.Start("mailto:" & selectedEMailCell.Value.ToString & "") 
     End If 
    End If 
End Sub 

我想在加能夠將來自同一行中的其他單元格的信息包含在主題行和出現的新電子郵件窗口的正文中。以下是我與工作中的列:

機甲電子郵件網站沒有(主題行),發現(身體,但我想添加其他意見爲好),日老(身體)

回答

1

以下是您需要的簡要概述。我沒有機會把它扔進編輯器,所以可能會出現一些錯別字。另外,我沒有進行任何檢查以查看其他單元是否爲空。基本的mailto:語法是mailto:[email protected]?subject=Hello&?body=Main message。還有一件事,如果您的主題或正文包含「&」或「?」,您可能需要將其過濾掉。

 Dim selectedEMailCell As DataGridViewCell = DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex) 
     Dim selectedEMailRow As DataGridViewRow = DirectCast(DataGridView1.Rows(e.RowIndex) 
     With selectedEMailRow 
      If selectedEMailCell.Value IsNot Nothing Then 
      Dim mailToString As New Stringbuilder 
      mailToString.Append("mailto:" & .selectedEMailCell.Value.ToString) 
      mailToString.Append("?subject=" & .Cells("Mech Email").value) 
      mailToString.Append(.Cells("Site No").value) 
      mailToString.Append("&body=" & .Cells("Findings").value) 
      mailToString.Append(.Cells("Days Old").value) 
      System.Diagnostics.Process.Start(mailToString.ToString & "") 
      End If 
     End With 
+0

很好用!唯一的問題是我有相當多的單元格有「&」和「?」符號。周圍有人嗎? – 2012-07-31 21:00:57

+1

@ryb是的。 「所有提到的參數都需要」轉義「,即空格應該被%20替換,回車/換行符%0D%0A,雙引號%22,單引號%27,反斜線%5C,小於通過<,大於>,以及與號碼&。 – 2012-07-31 21:08:25

+1

我之前的評論發現在http://www.robvanderwoude.com/email.php – 2012-07-31 21:09:07

相關問題