Foxtable(狐表)用户栏目专家坐堂 → 求助:提示发送邮件失败 无法从传输连接中读取数据: net_io_connectionclosed。如何解决呢?


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

主题:求助:提示发送邮件失败 无法从传输连接中读取数据: net_io_connectionclosed。如何解决呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:提示发送邮件失败 无法从传输连接中读取数据: net_io_connectionclosed。如何解决呢?  发帖心情 Post By:2019/2/26 16:16:00 [只看该作者]

.NET Framework 版本:2.0.50727.8784
Foxtable 版本:2018.10.9.1
错误所在事件:自定义函数SendEmail
详细错误信息:
调用的目标发生了异常。
发送邮件失败。
无法从传输连接中读取数据: net_io_connectionclosed。


自定义函数代码如下:
Dim ab As Row = Args(0)
Dim rw As Row = Args(1)
Dim dr As DataRow = Args(2)

Dim client As New System.Net.Mail.SmtpClient(ab("单位QQ邮件网关"), ab("单位QQ邮件端口")) '或者465
'MessageBox.Show(ab("单位QQ邮件网关"))
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("电子邮件"))
'MessageBox.Show(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("注意事项")
'MessageBox.Show(dr("注意事项"))
content &=  vbcrlf
content &= "参考法律法规" & dr("法律法规")
message.Body = content
client.Send(message)

发送邮件代码
If rw("电子邮件") <> Nothing Then
                    Dim ab As Row = Tables("系统信息").Current
                    Dim drs = DataTables("告知内容").Select("姓名 = '" & rw("姓名") & "'And 是否告知 = '是' " )
                    For Each dr As DataRow In drs
                        Functions.AsyncExecute("SendEmail",ab,rw,dr)
                        ' dr("是否告知")="是"
                    Next
                End If
[此贴子已经被作者于2019/2/26 16:18:06编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 16:59:00 [只看该作者]

代码不能这样写,你应该被整一段代码写成函数,然后异步执行这个函数。

 

也就是:发送邮件代码,写成异步函数;调用发送邮件那里,不能用异步。

 

If rw("电子邮件") <> Nothing Then
    Dim ab As Row = Tables("系统信息").Current
    Dim drs = DataTables("告知内容").Select("姓名 = '" & rw("姓名") & "'And 是否告知 = '是' " )
    For Each dr As DataRow In drs
        Functions.Execute("SendEmail",ab,rw,dr)
        ' dr("是否告知")="是"
    Next
End If


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)代码不能这样写,你应该被整一段代码...  发帖心情 Post By:2019/2/26 17:10:00 [只看该作者]

有点甜老师 更正之后  错误还是一楼图示的错误一样!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 17:30:00 [只看该作者]

以下是引用李孝春在2019/2/26 17:10:00的发言:
有点甜老师 更正之后  错误还是一楼图示的错误一样!

 

更换你的邮箱的账号密码等信息后测试。

 

尝试先发一条信息

 

    For Each dr As DataRow In drs
        Functions.Execute("SendEmail",ab,rw,dr)

        exit for
    Next


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)代码不能这样写,你应该被整一段代码...  发帖心情 Post By:2019/2/26 17:49:00 [只看该作者]

经测试可以发的
系统也是时好时坏


而且这个问题有点怪  估计是QQ邮件的限制,有没有办法直接取消错误弹出提示,变更为自定义的错误  比如:温馨提示,根据QQ邮件规则,当前已达上限,请稍后再操作邮件!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 17:55:00 [只看该作者]


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)加上 try catch 即可?http:...  发帖心情 Post By:2019/2/26 18:01:00 [只看该作者]

Dim client As New System.Net.Mail.SmtpClient(ab("单位QQ邮件网关"), ab("单位QQ邮件端口")) '或者465
'MessageBox.Show(ab("单位QQ邮件网关"))
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("电子邮件"))
'MessageBox.Show(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("注意事项")
'MessageBox.Show(dr("注意事项"))
content &=  vbcrlf
content &= "参考法律法规" & dr("法律法规")
message.Body = content
Try
   client.Send(message)
Catch ex As Exception
   
MessageBox.Show(“邮件超限”
End Try

这样么?确实弹出了邮件超限,但是有没有办法只让它出现一次  不根据当前数据行次数来多次提醒呢?

[此贴子已经被作者于2019/2/26 18:04:08编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/26 18:11:00 [只看该作者]

Try
   client.Send(message)
      return "正常"
Catch ex As Exception
   
MessageBox.Show(“邮件超限”
     return "出错"
End Try
 

调用的时候,获取信息

 

    For Each dr As DataRow In drs
        Dim jg = Functions.Execute("SendEmail",ab,rw,dr)

        If jg = "出错" Then

            exit for

        End If
    Next


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Try   client.Send(messag...  发帖心情 Post By:2019/2/26 18:25:00 [只看该作者]

OK  谢谢有点甜老师  我稍后试一试看看是否可以操作成功  在禁止发送时间过了之后再试

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Try   client.Send(messag...  发帖心情 Post By:2019/2/27 16:45:00 [只看该作者]

有点甜老师 怎么判断邮件发送失败呢?
当发送成功时,写入邮件告知等于是  反之就为否
当前不知道怎么判断邮件是发送成功还是失败!

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