我在下面有一个从SQL Server数据库读取的VB.NET代码。
Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("GasNominationsConnectionString").ConnectionString)
conn.Open()
Using cmd As SqlCommand = conn.CreateCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "getEmailAddress"
cmd.Parameters.Add("company", SqlDbType.VarChar).Value = "RWET"
Dim sqlrd As SqlDataReader = cmd.ExecuteReader()
If sqlrd.HasRows Then
While sqlrd.Read()
msg.[To].Add(New MailAddress("emailAddress"))
End While
End If
End Using
End Using
SQL Server表中的数据是2个电子邮件地址的列表,但是我收到错误
指定的字符串不是电子邮件地址所需的格式
任何想法我做错了什么?
答案 0 :(得分:0)
在我看来,您正在使用此行创建一个值为“emailAddress”的新MailAddress对象:
msg.[To].Add(New MailAddress("emailAddress"))
“emailAddress”确实不是有效的电子邮件地址。
你应该在你的sqlrd [“emailAddress”]中使用这样的值(不记得VB.net中的确切格式):
msg.[To].Add(New MailAddress(sqlrd["emailAddress"]))
答案 1 :(得分:0)
问题是"emailAddress"
不是电子邮件地址。你需要阅读读者:
Using sqlrd As SqlDataReader = cmd.ExecuteReader()
If sqlrd.HasRows Then
While sqlrd.Read()
Dim email = sqlrd.GetString(sqlrd.GetOrdinal("emailAddress"))
msg.[To].Add(New MailAddress(email))
End While
End If
End Using