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

本文关键字:失败 构建 邮件列表 循环 foreach | 更新日期: 2023-09-27 17:57:19

我正在尝试检查电子邮件验证以获取邮件列表。如果任何电子邮件无效,我必须发送带有虚假消息的失败邮件验证列表,我对 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.*/
                }
            }

提前非常感谢。

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

首先,您必须创建 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;
}