以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  发邮件间隔时间求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=38652)

--  作者:晕了快扶我
--  发布时间:2013/8/3 11:38:00
--  发邮件间隔时间求助

代码如下,因为邮箱限制的问题,导致只能发一封,如何在代码里加入等待时间呢?

Dim sendmail As String = e.Form.Controls("发件箱选择").Text
Dim title As String = e.Form.Controls("标题内容").Text
Dim nn As String = e.Form.Controls("正文内容").Text
Dim dr As DataRow = DataTables("发件箱表").Find("发件人地址 = \'" & sendmail & "\'")
Dim sp As New System.Net.Mail.SmtpClient(dr("smtp"),25)
sp.Credentials = New System.Net.NetworkCredential(dr("帐号"),dr("密码"))
\'创建邮件
Dim mail As New System.Net.Mail.MailMessage()
\'邮件主题
For Each r As DataRow In DataTables("收件人列表").DataRows
    mail.Subject = title & r("姓名")
    \'主题编码
    mail.SubjectEncoding = System.Text.Encoding.GetEncoding("GB2312")
    \'邮件正文件编码
    mail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312")
    \'发件人邮箱
    mail.From = New System.Net.Mail.MailAddress(sendmail)
    \'邮件优先级
    mail.Priority = System.Net.Mail.MailPriority.Normal
    \'HTML格式的邮件,为false则发送纯文本邮箱
    mail.IsBodyHtml = True
    \'邮件内容
    mail.Body = nn
    \'添加收件人,如果有多个,可以多次添加
    mail.To.Add(r("邮件地址"))
    \'定义附件,参数为附件文件名,包含路径,推荐使用绝对路径
    \'如果不需要附件,下面三行可以不要
    \'Dim a As New System.Net.Mail.Attachment("附件文件路径")
    \'附件文件名,用于收件人收到附件时显示的名称
    \'a.Name = "附件文件名"        \'加入附件,可以多次添加
    \'mail.Attachments.Add(a)\'发送邮件
    Try
        sp.Send(mail)
        MessageBox.Show("发送成功")
        Catch
        MessageBox.Show("发送失败")
    Finally
        mail.Dispose()
    End Try
Next


--  作者:狐狸爸爸
--  发布时间:2013/8/3 11:48:00
--  
增加个发送完成的标志列,增加一个5分钟执行一次的计划,每次都找出第一个没有发送的行,发送邮件完成后,将标识列设置一下。
--  作者:晕了快扶我
--  发布时间:2013/8/3 11:52:00
--  
以下是引用狐狸爸爸在2013-8-3 11:48:00的发言:
增加个发送完成的标志列,增加一个5分钟执行一次的计划,每次都找出第一个没有发送的行,发送邮件完成后,将标识列设置一下。

狐爸,这样判断的话弹窗很多啊


--  作者:晕了快扶我
--  发布时间:2013/8/3 11:53:00
--  
而且还有个毛病,因为这些人不是只发一次邮件的,这个标示列的判断很啰嗦啊,没效率啊
--  作者:狐狸爸爸
--  发布时间:2013/8/3 11:57:00
--  

例如你要等三秒再执行下一行代码:

 

Threading.Thread.Sleep(3000)

 


--  作者:晕了快扶我
--  发布时间:2013/8/3 12:05:00
--  
以下是引用狐狸爸爸在2013-8-3 11:57:00的发言:

例如你要等三秒再执行下一行代码:

 

Threading.Thread.Sleep(3000)

 

那在循环代码中如何暂停呢?


--  作者:狐狸爸爸
--  发布时间:2013/8/3 12:06:00
--  

for each dr as datarow in datatables("xxx").datarows

    \'原来的代码

    Threading.Thread.Sleep(3000)

next


--  作者:晕了快扶我
--  发布时间:2013/8/3 12:47:00
--  
以下是引用狐狸爸爸在2013-8-3 12:06:00的发言:

for each dr as datarow in datatables("xxx").datarows

    \'原来的代码

    Threading.Thread.Sleep(3000)

next

狐爸,我错了,应该不是QQ邮箱的问题,我间隔时间到了5分钟,第一封成功,第二封开始依然是发送失败,用msgbox看了收件人的地址是正确的

代码看了半天也看不出来问题。。

[此贴子已经被作者于2013-8-3 12:47:00编辑过]

--  作者:晕了快扶我
--  发布时间:2013/8/3 12:50:00
--  
搞定了图片点击可在新窗口打开查看