从DGV CellClick事件填充电子邮件正文和主题

问题描述:

我有一个正在通过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 

我想在加能够将来自同一行中的其他单元格的信息包含在主题行和出现的新电子邮件窗口的正文中。以下是我与工作中的列:

机甲电子邮件网站没有(主题行),发现(身体,但我想添加其他意见为好),日老(身体)

以下是您需要的简要概述。我没有机会把它扔进编辑器,所以可能会出现一些错别字。另外,我没有进行任何检查以查看其他单元是否为空。基本的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