从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
很好用!唯一的问题是我有相当多的单元格有“&”和“?”符号。周围有人吗? – 2012-07-31 21:00:57
@ryb是的。 “所有提到的参数都需要”转义“,即空格应该被%20替换,回车/换行符%0D%0A,双引号%22,单引号%27,反斜线%5C,小于通过<,大于>,以及与号码&。 – 2012-07-31 21:08:25
我之前的评论发现在http://www.robvanderwoude.com/email.php – 2012-07-31 21:09:07