如何在C#中构建foreach循环中失败的电子邮件列表

时间:2015-06-19 10:30:08

标签: c#

我正在尝试检查邮件列表中的电子邮件验证。如果任何电子邮件无效,我必须发送带有错误消息的失败邮件验证列表,我对C#很新,我们怎样才能做到这一点?当我正在阅读书籍时,我发现它可以通过StringBuilder,但我无法找到这个的语法,请为此提供语法。

    public static string IsSMTPRequestValid(this SmtpGatewayRequest smtpRequest)
            {

                SmtpRequestContent content = smtpRequest.Body as SmtpRequestContent;

                foreach (string email in content.EmailCC)
                {
                    bool valid = IsEmail(email);
/* Here I would like to check in any of the mails are invalid I have to return false, with the list of invalid mails.*/
                }

            }

提前多多感谢。

1 个答案:

答案 0 :(得分:0)

首先,您必须创建StringBuilder类的实例,然后在新行中将所有无效的电子邮件附加到它。如果您想以字符串形式返回所有电子邮件,则必须调用.ToString()方法。

public static string IsSMTPRequestValid(this SmtpGatewayRequest smtpRequest)
{
    StringBuilder invalidEmails = new StringBuilder();
    SmtpRequestContent content = smtpRequest.Body as SmtpRequestContent;

    content.EmailCC.Where(email => !IsEmail(email))
        .ForEach(n =>
        {
            invalidEmails.AppendLine(n)
        });
    return invalidEmails.ToString();
}

或以易于理解的形式

public static string IsSMTPRequestValid(this SmtpGatewayRequest smtpRequest)
{
    StringBuilder invalidEmails = new StringBuilder();
    SmtpRequestContent content = smtpRequest.Body as SmtpRequestContent;

    foreach (var email in content.EmailCC)
    {
        if (!IsEmail(email))
        {
            invalidEmails.AppendLine(email);
        }
    }

    return invalidEmails.ToString();
}

离开这个解决方案我认为最好的解决方案是返回整个项目列表。例如:

public static List<string> IsSMTPRequestValid(this SmtpGatewayRequest smtpRequest)
{
    List<string> invalidEmails = new List<string>();
    SmtpRequestContent content = smtpRequest.Body as SmtpRequestContent;

    foreach (var email in content.EmailCC)
    {
        if (!IsEmail(email))
        {
            invalidEmails.Add(email);
        }
    }

    return invalidEmails;
}