Foxtable(狐表)用户栏目专家坐堂 → 求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢?


  共有2849人关注过本帖树形打印复制链接

主题:求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢?  发帖心情 Post By:2019/2/15 22:51:00 [只看该作者]

求助:多账户邮件如何批量发送对应的查找记录行数据的内容邮件呢?
干警信息中有两个不同的账姓名及对应的两个不同的电子邮件
告知内容中有三条记录,然后应该是要发送三份电子邮件
结果现在是邮件发送了三次

但是三次的内容是把三条记录组合在一份邮件里 发了三次

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

想实现一个账户一行记录 一个电子邮件!

代码如下:(怎么修正呢)


    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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/15 23:29:00 [只看该作者]

message.To.Add(rw("电子邮件"))这句去掉

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)message.To.Add(rw("电子邮件"))这句...  发帖心情 Post By:2019/2/15 23:47:00 [只看该作者]

还是会一样  邮件内容会重叠

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
……

看看提示框总共弹出几个,都弹出什么内容

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)调试技巧:http://www.foxtable.com/...  发帖心情 Post By:2019/2/16 10:04:00 [只看该作者]

三条数据,会一次进行叠加   结果只发送一个账号的邮件  全部都是王先进邮件账号接收  三份邮件    而实际上 应该是两个人三份邮件  王先进两份邮件   陈发军一份邮件

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:33.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2019/2/16 10:06:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)看了一下微软的文档,说是如果调用Se...  发帖心情 Post By:2019/2/16 10:34:00 [只看该作者]

谢谢有点蓝  老师    提示未声明Args  这个应该怎么声明一下呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/16 10:44:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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)
……其他代码

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)添加函数,名称:SendEmailDim ab As ...  发帖心情 Post By:2019/2/16 11:11:00 [只看该作者]

.NET Framework 版本:2.0.50727.8784
Foxtable 版本:2018.10.9.1
错误所在事件:自定义函数SendEmail
详细错误信息:
调用的目标发生了异常。
无法将类型为“Foxtable.Row”的对象强制转换为类型“Foxtable.DataRow”。


 回到顶部
总数 16 1 2 下一页