以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  老大,帮我看看我的发送邮件的代码有什么问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=19146)

--  作者:blackzhu
--  发布时间:2012/4/28 17:46:00
--  老大,帮我看看我的发送邮件的代码有什么问题?

DataTables("邮件系统").Save
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = "Server"
cmd.CommandText = "SELECT * From {部门人员} Where [人员名称] = \'" & _UserName & "\'"
dt = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim m As New MailSender
    m.Host = dt.DataRows(0)("SMTP设置_服务器")
    m.Account = dt.DataRows(0)("邮件帐号")
    m.Password = dt.DataRows(0)("邮件密码")
    m.From = dt.DataRows(0)("Email")
    m.To = Tables("邮件系统").Current("收件人")
    m.Title = Tables("邮件系统").Current("主题")
    m.Content = Tables("邮件系统").Current("内容")
    Dim Multi1 As String = Tables("邮件系统").Current("附件")
    Dim Values1() As String
     m.SendAsync()
End If
MessageBox.Show("邮件发送成功")

 

 

  这个发送没有问题,可以成功.


--  作者:blackzhu
--  发布时间:2012/4/28 17:48:00
--  

DataTables("邮件系统").Save
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.ConnectionName = "Server"
cmd.CommandText = "SELECT * From {部门人员} Where [人员名称] = \'" & _UserName & "\'"
dt = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim m As New MailSender
    m.Host = dt.DataRows(0)("SMTP设置_服务器")
    m.Account = dt.DataRows(0)("邮件帐号")
    m.Password = dt.DataRows(0)("邮件密码")
    m.From = dt.DataRows(0)("Email")
    m.To = Tables("邮件系统").Current("收件人")
    Dim Multi As String = Tables("邮件系统").Current("抄送")
    Dim Values() As String
    Values = Multi.split(",")
    For Index As Integer = 1 To Values.Length - 1
        m.AddReceiver(Values(Index))
    Next
    m.Title = Tables("邮件系统").Current("主题")
    m.Content = Tables("邮件系统").Current("内容")
     m.SendAsync()
End If
MessageBox.Show("邮件发送成功")

 

  加了多人收件,不起作用,我的多人的代码写法有问题吗?

 

 

 另外附件也是这样的写法,有问题吗?

 

    Dim Multi1 As String = Tables("邮件系统").Current("附件")
    Dim Values1() As String
    Values1 = Multi1.split(",")
    For Index1 As Integer = 1 To Values1.Length - 1
        m.AddAttachments(Values1(Index1))
    Next
    


--  作者:blackzhu
--  发布时间:2012/4/28 17:50:00
--  

后来我把代码修改了一下:

 

DataTables("邮件系统").Save
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT * From {部门人员} Where [人员名称] = \'" & _UserName & "\'"
dt = cmd.ExecuteReader
Dim m As New MailSender
If dt.DataRows.Count > 0 Then
    m.Host = dt.DataRows(0)("SMTP设置_服务器")
    m.Account = dt.DataRows(0)("邮件帐号")
    m.Password = dt.DataRows(0)("邮件密码")
    m.From = dt.DataRows(0)("Email")
End If
    m.To = Tables("邮件系统").Current("收件人")
      MessageBox.Show(1)
    m.Title = Tables("邮件系统").Current("主题")
    m.Content = Tables("邮件系统").Current("内容")
    MessageBox.Show(2)
       m.SendAsync()
MessageBox.Show("邮件发送成功")

 

 

  红色部分都通过了,但是出现了错误提示:

 

 


图片点击可在新窗口打开查看此主题相关图片如下:tm截图未命名.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2012/4/28 18:08:00
--  

2楼问题,看看你的邮箱是否允许发送附件,如果允许的话,你的附件是不是太大,发送的附件超过了邮箱的限制,还有你用的是异步发送,虽然似乎马上发送完毕,但是实际上还在发送,并没有发送结束,特别是有附件的时候,所以并不能及时收到。

此外看看你的指定的附件是不是说真的存在,附件一定要包括完整的路径,还有是不是虽然收到了,但是被自动放在垃圾邮件箱了。

 

至于三楼,你没有指定收件人,当然报错的。


--  作者:布莱克朱
--  发布时间:2012/4/28 20:56:00
--  

我再研究一下.


--  作者:布莱克朱
--  发布时间:2012/4/28 22:38:00
--  

DataTables("邮件系统").Save
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT * From {部门人员} Where [人员名称] = \'" & _UserName & "\'"
dt = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
    Dim m As New MailSender
    m.Host = dt.DataRows(0)("SMTP设置_服务器")
    m.Account = dt.DataRows(0)("邮件帐号")
    m.Password = dt.DataRows(0)("邮件密码")
    m.From = dt.DataRows(0)("Email")
    Dim r As Row = Tables("邮件系统").Current
    m.Title =r("主题")
    m.Content = r("内容")
    Dim Values() As String
    Values = r("收件人").split(",")
    For Index As Integer = 0 To Values.Length - 1
        MessageBox.Show(Values(Index))
        m.AddReceiver(Values(Index))
    Next
    m.SendAsync()
End If
MessageBox.Show("邮件发送成功")

 

 这段代码怎么看都没有问题,但是

 

 Dim Values() As String
Values = r("收件人").split(",")
For Index As Integer = 0 To Values.Length - 1
MessageBox.Show(Values(Index))
m.AddReceiver(Values(Index))
Next


  这个不起作用,对话框没有出来.

 但是我用按钮单独做了一个测试是可以对话框的.


--  作者:布莱克朱
--  发布时间:2012/4/28 23:14:00
--  

我改这样也不行,问题在哪儿呢?

 

DataTables("邮件系统").Save
Dim r As Row = Tables("邮件系统").Current
Dim i As Integer
If r("收件人") = "" Then
    MessageBox.Show("收件人信息不完整, 请重新设置! ","信息提示",MessageBoxButtons.OK)
    Return
Else
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELECT * From {部门人员} Where [人员名称] = \'" & _UserName & "\'"
    dt = cmd.ExecuteReader
    If dt.DataRows.Count > 0 Then
        Dim m As New MailSender
        m.Host = dt.DataRows(0)("SMTP设置_服务器")
        m.Account = dt.DataRows(0)("邮件帐号")
        m.Password = dt.DataRows(0)("邮件密码")
        m.From = dt.DataRows(0)("Email")
        Dim Values() As String
        Values = r("收件人").split(",")
        For Index As Integer = 0 To Values.Length - 1
            If Values(Index).Length = 0 Then
                m.To = r("收件人")
            Else
                m.AddReceiver(Values(Index))
            End If
        Next
        m.Title =r("主题")
        m.Content = r("内容")
        m.SendAsync()
        MessageBox.Show("邮件发送完毕! ","信息提示!",MessageBoxButtons.OK)
    End If
End If


--  作者:布莱克朱
--  发布时间:2012/4/28 23:29:00
--  
全部搞定,封帖!