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

问题描述 投票:3回答:2

此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."
);

我明白了:指定的字符串不是电子邮件地址所需的格式。

这段代码有什么问题?

c# email razor asp.net-webpages
2个回答
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."
)

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
}
© www.soinside.com 2019 - 2024. All rights reserved.