将数据库转换为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
答案 0 :(得分:0)
显示{e_mail.To.Add(“item”+“Carrier”)}的每个循环的第一行中的行将创建为等于“itemCarrier”作为电子邮件地址的字符串,您可能希望使用它变量项和变量载体,当它们在引号中时,它们不会创建有效的TO地址。如果删除引号并直接使用变量并访问相应的属性,则可能会将您设置在正确的路径上。
就我所知,你的第二个for..each在使用变量方面是正确的。
关于你的代码的另一点......你正在将Scall作为一个新的列表,但是你将数据库变量设置为Scall的值,而Scall似乎没有从任何地方获取值...为了循环Scall列表的外部for-each循环列表需要从某个地方获取一系列值。
要从“调用”列加载列表,您可以运行类似
的内容...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 to SQL使加工过程快得多,则有更多优化的加载列表的方法,但在您的示例中,您似乎使用ADO,因此我使用了ADO在我的回答中。
你对代码“不工作”非常通用,并没有提供任何真实的细节因为什么不能正常工作所以我只是看着代码,并指出我认为根据什么是直接分析什么不起作用你发布了。