【问题标题】:Formatting string as email address将字符串格式化为电子邮件地址
【发布时间】:2016-09-26 21:42:17
【问题描述】:

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

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

这段代码有什么问题?

【问题讨论】:

  • 那么mailTo 中的内容是什么?
  • User.Email 的值是多少?
  • mailToUser.Mail 是来自:@row.Email 的邮件地址

标签: c# email razor asp.net-webpages


【解决方案1】:

我很确定……

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

【讨论】:

    【解决方案2】:

    验证?

    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
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多