将字符串格式化为电子邮件地址

3

这个SELECT语句返回项目所有者的电子邮件地址:

var selectEmailData = "SELECT User.Email FROM Projects INNER JOIN User ON Projects.ProjectOwner = User.UserId WHERE ProjectId=@0";
var dataEmail = db.Query(selectEmailData, ProjectId);

@foreach (var row in dataEmail)
{
    @row.Email
}

但是当我尝试这样做:

var mailTo = dataEmail.ToString();

发送电子邮件:
WebMail.Send(
    to: mailTo,
    subject: "Hello there!",
    body: "Your project is ready."
);

我得到了这个错误信息:指定的字符串不符合电子邮件地址的要求。 这段代码有什么问题?

1
那么 mailTo 里面是什么? - Marc B
1
User.Email 的值是什么? - ChrisF
mailToUser.Mail是来自@row.Email的邮件地址。 - Mendelsohn
2个回答

0

验证?

Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); 
Match match = regex.Match(email); 
if (match.Success)
{
//Send email
}
else
{
//Bad email
}

其他方式:

try
{
MailAdress email = new MailAddress(<enter here string>);
}
catch (FormatException fe)
{
//Bad email
}

0

我非常确定...

var dataEMail = db.Query(…) would return a collection not a string.

所以...

var mailTo = dataEmail.ToString();

可能你想要的是这样的:

"System.Collections.Generic......"。

var selectEmailData = "SELECT User.Email FROM Projects INNER JOIN User  ON Projects.ProjectOwner = User.UserId WHERE ProjectId=@0";
var allEmails = db.Query(selectEmailData, ProjectId);

@foreach (var row in allEmails)
{
  WebMail.Send(
  to: @row.Email,
  subject: "Hello there!",
  body: "Your project is ready."
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接