Foxtable(狐表)用户栏目专家坐堂 → [求助]利用QQ邮箱自动分发工资条存在的几个问题-已解决


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

主题:[求助]利用QQ邮箱自动分发工资条存在的几个问题-已解决

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
[求助]利用QQ邮箱自动分发工资条存在的几个问题-已解决  发帖心情 Post By:2019/3/1 19:42:00 [只看该作者]

      原来,先根据工资总表,自动生成每个职工的工资条,再进入QQ群,挨个分发工资条,但效率太低。

    现在,想利用QQ邮箱,根据工资总表的名单,以及从人员管理表中提取的对应QQ号,自动发送工资条到QQ邮箱。

 

    存在问题:

 

    1、如果用同步发送,会提示下图错误,且前面的人发送成功,而后面的人发送不成功:

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

 

    2、如果用异步发送,虽然不提示错误,但前面的人收不到,且会将所有附件都发送给后面的人。

 

    另外,必须修改帮助文档:帮助文档认为Port默认为25,通常无需设定,但事实是该端口号默认被关闭,或要按QQ要求设置。

 

    主要代码如下,请高手指正,谢谢!

 

Dim filename As String = "D:\工资条\工资总表.xls"
Dim App As New MSExcel.Application
Dim book1 As MSExcel.WorkBook = App.WorkBooks.Open(filename)
Dim ws1 As MSExcel.WorkSheet = book1.WorkSheets(1)
Dim rg1 As MSExcel.Range = ws1.UsedRange
Dim name As String
Dim dt As DataTable = DataTables("人员管理")
Dim dr As DataRow = dt.Find("员工姓名='" & _username & "'")
Dim m As New MailSender
m.Host = "smtp.qq.com"
m.port = "587" '不能用默认的25端口,因默认情况下是关闭的
m.EnableSsl = True
m.Account = "382433689@qq.com"
m.Password = "gfoaafpvckhhbhd"
m.From = dr("QQ号") & "@qq.com"
m.C
For i As Integer = 2 To rg1.Rows.Count
    If ws1.Cells(i,2).value = "" Then '第2列为姓名列
        Exit For
    End If
    name = ws1.Cells(i,2).value
    dr = dt.Find("员工姓名 = '" & name & "'")
    If dr IsNot Nothing Then
        If dr("QQ号")>"" Then
            m.Title = dr("员工姓名") & "工资条"
            m.To = dr("QQ号") & "@qq.com"
            m.AddAttachments("D:\工资条\" & name & ".xlsx") '附件会越加越多
            m.SendAsync() '两种发送方式,都得不到正确的结果
        End If
    End If
Next

[此贴子已经被作者于2019/3/2 21:24:04编辑过]

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


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/1 21:07:00 [只看该作者]

Dim filename As String = "D:\工资条\工资总表.xls"
Dim App As New MSExcel.Application
Dim book1 As MSExcel.WorkBook = App.WorkBooks.Open(filename)
Dim ws1 As MSExcel.WorkSheet = book1.WorkSheets(1)
Dim rg1 As MSExcel.Range = ws1.UsedRange
Dim name As String
Dim dt As DataTable = DataTables("人员管理")
Dim dr As DataRow = dt.Find("员工姓名='" & _username & "'")

For i As Integer = 2 To rg1.Rows.Count
'把邮件的对象定义发到循环里面
Dim m As New MailSender
m.Host = "smtp.qq.com"
m.port = "587" '不能用默认的25端口,因默认情况下是关闭的
m.EnableSsl = True
m.Account = "382433689@qq.com" 
m.Password = "gfoaafpvckhhbhd"
m.From = dr("QQ号") & "@qq.com"
m.C
    If ws1.Cells(i,2).value = "" Then '第2列为姓名列
        Exit For
    End If
    name = ws1.Cells(i,2).value
    dr = dt.Find("员工姓名 = '" & name & "'")
    If dr IsNot Nothing Then
        If dr("QQ号")>"" Then
            m.Title = dr("员工姓名") & "工资条"
            m.To = dr("QQ号") & "@qq.com"
            m.AddAttachments("D:\工资条\" & name & ".xlsx") '附件会越加越多
            m.SendAsync() '两种发送方式,都得不到正确的结果
        End If
    End If
Next

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6835 威望:0 精华:0 注册:2012/4/2 21:49:00
  发帖心情 Post By:2019/3/2 10:19:00 [只看该作者]

谢谢蓝版。
    看来只能把邮件的对象定义放到循环里面了,就算浪费一点点时间吧。特有一种被帮助文档误导的感觉。
  对于mailsender,总的来说:
  1、Port属性是必须的,不是帮助文档说的“通常无需设定”。特别是帮助文档在“使用QQ邮箱发送邮件”一节中的代码是不完整的,必须设置Port,这也是在浪费大量时间之后,在论坛搜索到的,看来版主应该及时向狐爸反映问题并及时修改帮助文档。
  2、一般情况下,From与Account应该是一样的,因而From属性实际上是多余的。如果只看帮助文档,似乎我可以用别人的名义发邮件,但现实不行。From就是Account,或From就Account的别名。说明帮助文档解释不清。
  3、举例根本没有代表性(这是整个帮助文档的通病,因而不仅不能拿来小改即用,而且需要浪费版主的大量时间,本帖就是一例)。5个示例,只需2个就够了:示例1~示例4可以合并,综合考虑端口、编码、群发、附件;示例5为综合考虑端口、编码、附件的分发。

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


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

和默认端口不一样才需要设置,“通常无需设定”就是这个意思

不同人的理解能力不一样,没有什么文档能够是让所有人都满意的。所以也是论坛和技术支持存在的意义

 回到顶部