读取数据库的列表,然后做一些与信息(Reading a Database to a list and

2019-10-19 02:26发布

转换数据库到VB中的一个列表。 我基本上是用2所列出的第一个列表中包含多个电子邮件地址,或他们像EXMPLE极“@ hotmail.com”第二个列表是从,我已经链接到形式的数据库中的列读取。 我会后我试图使工作的代码,但它似乎并没有被考虑到。 这是假设作为与选项的警报系统发送到数据库中的1人或所有人,请帮助,使这项工作?

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Try

        Dim Smtp_Server As New SmtpClient
        Dim e_mail As New MailMessage()
        Dim self As New MailAddress("archernolan151@gmail.com")
        Dim strCarriers As New List(Of String) '@nd half of carriers email
        Dim Scall As New List(Of String) 'List from the linked Column


        Smtp_Server.UseDefaultCredentials = False
        Smtp_Server.Credentials = New Net.NetworkCredential("blank@gmail.com", "password")
        Smtp_Server.Port = 587
        Smtp_Server.EnableSsl = True
        Smtp_Server.Host = "smtp.gmail.com"

        strCarriers.Add("@pm.sprint.com")
        strCarriers.Add("@vtext.com")
        strCarriers.Add("@tmomail.net")
        strCarriers.Add("@txt.att.net")


        rw = ContactsDataSet.Tables(0).NewRow  'Database Columns
        rw.Item("Call") = Scall
        ContactsDataSet.Tables(0).Rows.Add(rw) 'End of database

        If rad1.Checked = True Then   'If the radio button is clicked it will take the data from the Database verses from the text box

            For Each item In Scall
                For Each Carrier As String In strCarriers

                    e_mail = New MailMessage()
                    e_mail.From = self
                    e_mail.To.Add("item" + "Carrier")
                    e_mail.Subject = txtSubject.Text
                    e_mail.IsBodyHtml = False
                    e_mail.Body = txtMessage.Text
                    Smtp_Server.Send(e_mail)

                Next Carrier
            Next

        ElseIf rad1.Checked = False Then

            For Each Carrier As String In strCarriers

                e_mail = New MailMessage()
                e_mail.From = self
                e_mail.To.Add(txtTo.Text + Carrier)
                e_mail.Subject = txtSubject.Text
                e_mail.IsBodyHtml = False
                e_mail.Body = txtMessage.Text
                Smtp_Server.Send(e_mail)

            Next
            End If



        MsgBox("Mail Sent")

    Catch error_t As Exception
        MsgBox(error_t.ToString)



    End Try
End Sub

Answer 1:

在第一每个循环,它{e_mail.To.Add(“项目” +“运营商”)}行会创建为等于“itemCarrier”作为电子邮件地址字符串,你可能想拥有它使用可变项和可变载波,当他们是在引号像他们将不会创建一个到地址有效。 如果您删除引号并直接使用的变量,并访问相应的属性可能设置你在正确的道路上。

你的第二个for..each是正确的在其使用的变量,据我可以告诉。

关于你的代码的另一点...你抵命SCALL作为一个新的列表,但那么你的数据库变量设置为SCALL和头疥的价值似乎并不越来越从任何位置值......为了让在外的 - 每一个循环,循环该列表需要从什么地方得到的一系列数值的SCALL名单。

从“呼叫”栏加载列表你可以运行这样的事情

...code to connect to database
...code to read to a dataset called tmp with a table that contains the column "Call"
For each dbRow as DataRow in tmp.tables(0).rows
   Scall.Add(dbRow.Item("Call"))
Next 

现在,我还没有添加任何错误检查和有,如果你使用LINQ加载列表的更加优化的方式来SQL,使过程变得更快,但在你的例子中,你似乎是使用ADO所以我用ADO在我的答案。

你是非常通用的关于“不工作”的代码,并没有提供任何真正的细节,究竟是行不通的,所以我只是在看代码,并指示我认为是不工作的基础上,你贴什么直线上升的分析。



文章来源: Reading a Database to a list and then doing Something with the info