Foxtable(狐表)用户栏目专家坐堂 → 下面的代码如果要用到FOXTABLE该如何变通?


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

主题:下面的代码如果要用到FOXTABLE该如何变通?

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


加好友 发短信
等级:小狐 帖子:307 积分:2557 威望:0 精华:0 注册:2012/7/8 23:19:00
下面的代码如果要用到FOXTABLE该如何变通?  发帖心情 Post By:2015/1/17 15:44:00 [只看该作者]

老师,最近一直有研究如何用FOXTABLE发送邮件,论坛上一些帖子基本都看过一,能用上

比如:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=31298&skin=0

现在发邮件过程中有二个问题需要解决:

1,就是异步发送时,发送任何邮件(就算是5M的邮件)总是瞬间发送完成,过一定的时间,也确实能收到,

但我多数是群发,我希望能形象的控制发邮件的速度,

2,发送的邮件能在邮件服务器的发件箱里留底;

老师们能帮忙解决一下吗?成分感谢啊!

 

我的代码如下:

 

With Tables("邮局设置表")
    For i As Integer = .BottomPosition To .TopPosition Step -1
       
        '创建发件连接,根据你的发送邮箱的SMTP设置填充
        Dim smtp As New System.Net.Mail.SmtpClient("smtp.exmail.qq.com")
        smtp.UseDefaultCredentials = False
        '发件邮箱身份验证,参数分别为 发件邮箱登录名和密码
        smtp.Credentials = New System.Net.NetworkCredential("Tony.shu@oky-messe.com", "htlk197753")
        '创建邮件
        Dim mail As New System.Net.Mail.MailMessage()
        '邮件主题
        mail.Subject = "邮件主题"
        '主题编码
        mail.SubjectEncoding = System.Text.Encoding.GetEncoding("GB2312")
        '邮件正文件编码
        mail.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312")
        '发件人邮箱,第二个参数表示发件人名称,不写就用邮箱做发件人
        mail.From = New System.Net.Mail.MailAddress("Tony.shu@oky-messe.com","欧棋国际展览")
        '邮件优先级
        mail.Priority = System.Net.Mail.MailPriority.Normal
        'HTML格式的邮件,为false则发送纯文本邮箱
        mail.IsBodyHtml = True
        '邮件内容,<br />是换行符
        Dim mbd As String = Tables("邮件设置表").Rows(0)("正文")
        mbd = mbd.Replace(chr(13),"<br />")
        Dim mbdzt As String = Tables("邮件设置表").Rows(0)("正文字体")
        Dim mbdzh As String = Tables("邮件设置表").Rows(0)("正文字号")
        mail.Body = "<FONT style='FONT-SIZE:" & mbdzh & "pt;COLOR:black;FONT-FAMILY:" & mbdzt & "'>" & mbd & "</FONT>"
       
        '添加收件人,如果有多个,可以多次添加
        mail.To.Add("" & .Rows(i)("Email地址") & "")
        '定义附件,参数为附件文件名,包含路径,推荐使用绝对路径
        '如果不需要附件,下面三行可以不要
        Dim a As New System.Net.Mail.Attachment("d:\test.jpg")
        '附件文件名,用于收件人收到附件时显示的名称
        a.Name = "test.jpg"
        '加入附件,可以多次添加
        mail.Attachments.Add(a)
        '发送邮件
        Try
            'Dim userdata As String = "EXPO-PRO"
            smtp.sendasync(mail, "userdata")
            'smtp.Send(mail)
            .Rows(i)("密码") = "yes"
            'MessageBox.Show("发送成功")
            Catch
            .Rows(i)("密码") = "no"
            'MessageBox.Show("发送失败")
            'Finally
            'mail.Dispose()
        End Try

    Next
End With

 

 

 

 

还有,下面的代码是msdn里的代码,如果改到foxtable里用,如何改呢: 

Imports System Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mime
Imports System.Threading Imports System.ComponentModel
Namespace Examples.SmptExamples.Async
    Public Class SimpleAsynchronousExample
        Private Shared mailSent As Boolean = False
        Private Shared Sub SendCompletedCallback(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
            ' Get the unique identifier for this asynchronous operation.
            Dim token As String = CStr(e.UserState)

            If e.Cancelled Then
                Console.WriteLine("[{0}] Send canceled.", token)
            End If
            If e.Error IsNot Nothing Then
                Console.WriteLine("[{0}] {1}", token, e.Error.ToString())
            Else
                Console.WriteLine("Message sent.")
            End If
            mailSent = True
        End Sub
        Public Shared Sub Main(ByVal args() As String)
            ' Command line argument must the the SMTP host.
            Dim client As New SmtpClient(args(0))
            ' Specify the e-mail sender.
            ' Create a mailing address that includes a UTF8 character
            ' in the display name.
            Dim [from] As New MailAddress("jane@contoso.com", "Jane " & ChrW(&HD8) & " Clayton", System.Text.Encoding.UTF8)
            ' Set destinations for the e-mail message.
            Dim [to] As New MailAddress("ben@contoso.com")
            ' Specify the message content.
            Dim message As New MailMessage([from], [to])
            message.Body = "This is a test e-mail message sent by an application. "
            ' Include some non-ASCII characters in body and subject.
            Dim someArrows As New String(New Char() {ChrW(&H2190), ChrW(&H2191), ChrW(&H2192), ChrW(&H2193)})
            message.Body += Environment.NewLine & someArrows
            message.BodyEncoding = System.Text.Encoding.UTF8
            message.Subject = "test message 1" & someArrows
            message.SubjectEncoding = System.Text.Encoding.UTF8
            ' Set the method that is called back when the send operation ends.
            AddHandler client.SendCompleted, AddressOf SendCompletedCallback
            ' The userState can be any object that allows your callback
            ' method to identify this send operation.
            ' For this example, the userToken is a string constant.
            Dim userState As String = "test message1"
            client.SendAsync(message, userState)
            Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.")
            Dim answer As String = Console.ReadLine()
            ' If the user canceled the send, and mail hasn't been sent yet,
            ' then cancel the pending operation.
            If answer.StartsWith("c") AndAlso mailSent = False Then
                client.SendAsyncCancel()
            End If
            ' Clean up.
            message.Dispose()
            Console.WriteLine("Goodbye.")
        End Sub
    End Class
End Namespace

[此贴子已经被作者于2015-1-17 15:45:50编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/17 15:52:00 [只看该作者]

Imports System Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mime
Imports System.Threading 
Imports System.ComponentModel

把这些在狐表添加引用里.添加引用

然后直接复制代码到全局代码即可.




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


加好友 发短信
等级:小狐 帖子:307 积分:2557 威望:0 精华:0 注册:2012/7/8 23:19:00
  发帖心情 Post By:2015/1/17 16:02:00 [只看该作者]

以下是引用Bin在2015-1-17 15:52:00的发言:
Imports System Imports System.Net
Imports System.Net.Mail
Imports System.Net.Mime
Imports System.Threading 
Imports System.ComponentModel

把这些在狐表添加引用里.添加引用

然后直接复制代码到全局代码即可.
谢谢老师,那最上面的那个代码,要解决的

1,就是异步发送时,发送任何邮件(就算是5M的邮件)总是瞬间发送完成,过一定的时间,也确实能收到,

但我多数是群发,我希望能形象的控制发邮件的速度,

2,发送的邮件能在邮件服务器的发件箱里留底;

这二个问题,有方法吗,BIN版!





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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/17 16:16:00 [只看该作者]

狐表自带的也有异步发送 http://www.foxtable.com/help/topics/1404.htm

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


加好友 发短信
等级:小狐 帖子:307 积分:2557 威望:0 精华:0 注册:2012/7/8 23:19:00
  发帖心情 Post By:2015/1/17 16:25:00 [只看该作者]

这个没法写HTML邮件啊!


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/17 16:34:00 [只看该作者]

看2楼.可以试试. 或者用http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=43480&skin=0

把代码写到全局事件函数去.然后用多线程,参考http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=30251&skin=0

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


加好友 发短信
等级:小狐 帖子:307 积分:2557 威望:0 精华:0 注册:2012/7/8 23:19:00
  发帖心情 Post By:2015/1/17 16:53:00 [只看该作者]

2楼的方法试了,提示外部引用找不到,外部引用都没法添加啊!

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


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

mark 处理异步发送邮件

 

全局代码处理

 

Public Sub SendCompletedCallback(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
' Get the unique identifier for this asynchronous operation.
Dim token As String = CStr(e.UserState)

If e.Cancelled Then
    output.show("[" & token & "] Send canceled.")
End If
If e.Error IsNot Nothing Then
    output.show("[{" & token & "}] {" & e.Error.ToString() & "}" )
Else
    output.show("Message sent.")
End If

End Sub

 

 

发送代码

 

Dim client As New Net.Mail.SmtpClient("smtp.126.com")
'client.Timeout = 60000

client.UseDefaultCredentials = True
client.Credentials = new System.Net.NetworkCredential("lin_hailun@126.com", "6849338.")
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network

Dim [from] As New Net.Mail.MailAddress("lin_hailun@126.com", "lin " & ChrW(&HD8) & " hailun", System.Text.Encoding.UTF8)
' Set destinations for the e-mail message.
Dim [To] As New Net.Mail.MailAddress("2450314695@qq.com")
' Specify the message content.
Dim message As New Net.Mail.MailMessage([from], [To])

message.Body = "This is a test e-mail message sent by an application. "
' Include some non-ASCII characters in body and subject.
Dim someArrows As New String(New Char() {ChrW(&H2190), ChrW(&H2191), ChrW(&H2192), ChrW(&H2193)})
message.Body += Environment.NewLine & someArrows
message.BodyEncoding = System.Text.Encoding.UTF8
message.Subject = "test message 1" & someArrows
message.SubjectEncoding = System.Text.Encoding.UTF8
' Set the method that is called back when the send operation ends.
AddHandler client.SendCompleted, AddressOf SendCompletedCallback

Dim userState As String = "test message1"
client.SendAsync(message, userState)


 回到顶部