以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131085) |
-- 作者:李孝春 -- 发布时间:2019/2/15 22:51:00 -- 求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢? 求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢? 干警信息中有两个不同的账姓名及对应的两个不同的电子邮件 告知内容中有三条记录,然后应该是要发送三份电子邮件 结果现在是邮件发送了三次 但是三次的内容是把三条记录组合在一份邮件里 发了三次 想实现一个账户一行记录 一个电子邮件! 代码如下:(怎么修正呢) Dim dr1 As DataRow dr1 = DataTables("告知内容").Find("是否告知 = \'否\' " ) If dr1 IsNot Nothing Then Dim tbl As Table = Tables("干警信息") For Each rw As Row In tbl.GetCheckedRows If rw("电子邮件") <> Nothing Then Dim ab As Row = Tables("系统信息").Current Dim drs = DataTables("告知内容").S elect("姓名 = \'" & rw("姓名") & "\'And 是否告知 = \'否\' " ) For Each dr As DataRow In drs Dim client As New System.Net.Mail.SmtpClient(ab("单位QQ邮件网关"), ab("单位QQ邮件端口")) \'或者465 client.EnableSsl = True \'SSL client.Credentials=New System.Net.NetworkCredential(ab("单位QQ邮件"), ab("单位QQ邮件发送授权码")) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network Dim message As New System.Net.Mail.MailMessage() message.From=new System.Net.Mail.MailAddress(ab("单位QQ邮件"), ab("单位QQ邮件别名")) message.To.Add(new System.Net.Mail.MailAddress(rw("电子邮件"), rw("姓名"))) message.To.Add(rw("电子邮件")) message.Subject = "瓮安检察" & dr("流程名称") & "通知" message.BodyEncoding = System.Text.Encoding.UTF8 Dim content As String content &= "【"& rw("姓名") & "】" & "您好!" & vbcrlf content &= vbcrlf content &= dr("嫌疑人姓名") & "涉嫌" & dr("涉嫌案由") & "一案,经我院" & dr("流程时间") & "审查,现在已经进入【" & dr("流程名称") & "】" & vbcrlf content &= vbcrlf content &= dr("注意事项") content &= vbcrlf content &= "参考法律法规" & dr("法律法规") message.Body = content AddHandler client.SendCompleted, AddressOf SendCompletedCallback Dim userState As String = "test message1" client.SendAsync(message, userState) dr("是否告知")="是" Next Else End If Next Else End If [此贴子已经被作者于2019/2/15 22:56:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/2/15 23:29:00 -- message.To.Add(rw("电子邮件"))这句去掉 |
-- 作者:李孝春 -- 发布时间:2019/2/15 23:47:00 -- 回复:(有点蓝)message.To.Add(rw("电子邮件"))这句... 还是会一样 邮件内容会重叠 |
-- 作者:有点蓝 -- 发布时间:2019/2/16 8:53:00 -- 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm If dr1 IsNot Nothing Then Dim tbl As Table = Tables("干警信息") msgbox(tbl.GetCheckedRows().count) For Each rw As Row In tbl.GetCheckedRows If rw("电子邮件") <> Nothing Then Dim ab As Row = Tables("系统信息").Current Dim drs = DataTables("告知内容").S elect("姓名 = \'" & rw("姓名") & "\'And 是否告知 = \'否\' " ) msgbox(drs.count) For Each dr As DataRow In drs …… content &= vbcrlf content &= "参考法律法规" & dr("法律法规") message.Body = content msgbox(message.Body) AddHandler client.SendCompleted, AddressOf SendCompletedCallback …… 看看提示框总共弹出几个,都弹出什么内容 |
-- 作者:李孝春 -- 发布时间:2019/2/16 10:04:00 -- 回复:(有点蓝)调试技巧:http://www.foxtable.com/... 三条数据,会一次进行叠加 结果只发送一个账号的邮件 全部都是王先进邮件账号接收 三份邮件 而实际上 应该是两个人三份邮件 王先进两份邮件 陈发军一份邮件 此主题相关图片如下:11.png [此贴子已经被作者于2019/2/16 10:06:32编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/2/16 10:28:00 -- 看了一下微软的文档,说是如果调用SendAsync异步发送邮件,必须等待第一封邮件发送完毕后,才能发送第二封邮件。 如果要发送多封邮件,试试使用Foxtable的异步函数, 比如有函数,名称:SendEmail Dim ab As DataRow = Args(0) Dim rw As DataRow = Args(1) Dim dr As DataRow = Args(2) Dim client As New System.Net.Mail.SmtpClient(ab("单位QQ邮件网关"), ab("单位QQ邮件端口")) \'或者465 client.EnableSsl = True \'SSL client.Credentials=New System.Net.NetworkCredential(ab("单位QQ邮件"), ab("单位QQ邮件发送授权码")) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network Dim message As New System.Net.Mail.MailMessage() message.From=new System.Net.Mail.MailAddress(ab("单位QQ邮件"), ab("单位QQ邮件别名")) message.To.Add(new System.Net.Mail.MailAddress(rw("电子邮件"), rw("姓名"))) message.To.Add(rw("电子邮件")) message.Subject = "瓮安检察" & dr("流程名称") & "通知" message.BodyEncoding = System.Text.Encoding.UTF8 Dim content As String content &= "【"& rw("姓名") & "】" & "您好!" & vbcrlf content &= vbcrlf content &= dr("嫌疑人姓名") & "涉嫌" & dr("涉嫌案由") & "一案,经我院" & dr("流程时间") & "审查,现在已经进入【" & dr("流程名称") & "】" & vbcrlf content &= vbcrlf content &= dr("注意事项") content &= vbcrlf content &= "参考法律法规" & dr("法律法规") message.Body = content client.Send(message) 调用 Dim dr1 As DataRow dr1 = DataTables("告知内容").Find("是否告知 = \'否\' " ) If dr1 IsNot Nothing Then Dim tbl As Table = Tables("干警信息") For Each rw As Row In tbl.GetCheckedRows If rw("电子邮件") <> Nothing Then Dim ab As Row = Tables("系统信息").Current Dim drs = DataTables("告知内容").S elect("姓名 = \'" & rw("姓名") & "\'And 是否告知 = \'否\' " ) For Each dr As DataRow In drs Functions.AsyncExecute("SendEmail",ab,rw,dr) dr("是否告知")="是" Next End If Next End If [此贴子已经被作者于2019/2/16 10:44:16编辑过]
|
-- 作者:李孝春 -- 发布时间:2019/2/16 10:34:00 -- 回复:(有点蓝)看了一下微软的文档,说是如果调用Se... 谢谢有点蓝 老师 提示未声明Args 这个应该怎么声明一下呢? |
-- 作者:有点蓝 -- 发布时间:2019/2/16 10:44:00 -- 看:http://www.foxtable.com/webhelp/scr/1486.htm |
-- 作者:有点蓝 -- 发布时间:2019/2/16 10:45:00 -- 添加函数,名称:SendEmail Dim ab As DataRow = Args(0) Dim rw As DataRow = Args(1) Dim dr As DataRow = Args(2) ……其他代码 |
-- 作者:李孝春 -- 发布时间:2019/2/16 11:11:00 -- 回复:(有点蓝)添加函数,名称:SendEmailDim ab As ... .NET Framework 版本:2.0.50727.8784 Foxtable 版本:2018.10.9.1 错误所在事件:自定义函数SendEmail 详细错误信息: 调用的目标发生了异常。 无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”。 |