验证电子邮件地址

2024-03-11

我正在尝试使用以下代码使用 C# 发送电子邮件。

MailMessage mail = new MailMessage();
mail.From = new MailAddress(fromAddress, friendlyName);
mail.To.Add(toAddress);
mail.CC.Add(ccAddress);

//set the content
mail.Subject = emailSubject;
mail.Body = emailHeader + "\n" + emailBody;

//send the message
SmtpClient smtp = new SmtpClient(ServerAddress);
smtp.Credentials = CredentialCache.DefaultNetworkCredentials;
mail.IsBodyHtml = true;
smtp.Send(mail);

现在,我的函数接收到的“toAddress”字符串可能包含单个地址,也可能包含许多逗号分隔的地址。

现在的问题是,如果有多个逗号分隔的地址,其中一两个可能是错误的电子邮件地址格式。

因此,当我尝试使用此代码发送电子邮件时,出现异常:

“指定的字符串不符合电子邮件地址所需的格式。”

有什么方法可以验证逗号分隔的电子邮件地址吗? 我在某处读到,验证电子邮件地址的唯一方法是向其发送电子邮件,因为验证电子邮件地址的正则表达式可能非常大。

另外,我无法控制设计,或者地址字符串如何进入我的函数,我无法在用户界面中添加电子邮件验证,所以我很无助......

我的问题是电子邮件不会发送至ALL逗号分隔字符串中的地址,即使仅SOME地址的格式错误。

有什么方法可以正确验证 .NET 中的电子邮件地址吗?有没有办法清除坏电子邮件地址并仅将邮件发送给好电子邮件地址?


这是我们在生产中的代码(甚至为您添加了逗号)。通常您不应该使用 try/catch 进行验证,但它在这里效果很好。我相信这比尝试重新编码验证器更好。

string[] allToAddresses = to.Split(";,".ToCharArray(),
                                 StringSplitOptions.RemoveEmptyEntries)
foreach (string toAddress in allToAddresses)
{
    try
    {
        message.To.Add(toAddress);
    }
    catch (FormatException)
    {
        //do nothing, ill-formed address. 
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

验证电子邮件地址 的相关文章

  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • 如何减少具有多个单元的 PdfPTable 的内存消耗

    我正在使用 ITextSharp 创建一个 PDF 它由单个 PdfTable 组成 不幸的是 对于特定的数据集 由于创建了大量 PdfPCell 我遇到了内存不足异常 我已经分析了内存使用情况 我有近百万个单元格的 1 2 在这种情况下有
  • 是否可以在不连接数据库的情况下检索 MetadataWorkspace?

    我正在编写一个需要遍历实体框架的测试库MetadataWorkspace对于给定的DbContext类型 但是 由于这是一个测试库 我宁愿不连接到数据库 它引入了测试环境中可能无法使用的依赖项 当我尝试获取参考时MetadataWorksp

随机推荐

  • 访问类中的会话变量

    当需要检索或保留会话值时 在类构造函数上使用 session start 是否被认为是正常的 最佳实践 除非从 construct 调用 session start 否则无法从类中检索会话变量 session start if isset
  • 在Google云平台上使用FFMPEG

    我将音频文件存储在 Google Cloud Storage 上 通过 Firebase 存储 我需要使用 FFMPEG 将音频文件从立体声 两个通道 转换为单声道 一个通道 如何在 Google Cloud Platform 上进行上述转
  • java.io.IOException:不支持标记/重置

    我知道这个问题已经被问过很多次了 但在某些情况下有所不同 所以我无法弄清楚 当我在 Eclipse 中运行游戏时 一切都很顺利 游戏运行完美 但在导出后 它崩溃了 我可以打开游戏并在菜单中移动 但没有播放任何声音 并且在我点击播放后 游戏就
  • 查找数组中第一个非零值索引

    我有一个数组数组 0 0 0 0 3 2 5 6 15 9 0 0 7 23 我可以用类似的东西 indexOf 0 如果我想找到第一个零值索引 但是如何找到第一个非零值的索引或符合某些条件的索引 它可能看起来像 indexOf funct
  • 从 contentViewController 中解除 UIPopoverController?

    如果您想关闭弹出窗口 例如 从弹出窗口的 contentViewController 中的按钮 您必须 创建对弹出窗口的引用 该引用由创建它的视图控制器保存 从 contentViewController 创建一个通知 让所属视图控制器知道
  • 在 VB.net 中将竖线分隔文件更改为逗号分隔

    所以我有一组管道分隔的输入 如下所示 787291 3224325523 37826427 37826427 2482472 2482472 46284729 46246 24682 82524 6846419 68247 我使用下面给出的
  • 干扰器 helloworld 示例

    我想学习颠覆者框架 http code google com p disruptor 谁能给我一个用Java语言在main方法中运行的helloworld例子 这是一个简单的 可运行的示例 说明如何使用 Disruptor 库 示例是使用
  • 卸载 oh-my-zsh 时遇到问题?

    我在 OSX 上 想要切换回原来的 zsh 配置哦我的zsh http github com robbyrussell oh my zsh 但是当我运行uninstall脚本它给了我一个错误 sudo uninstall oh my zsh
  • dxDataGrid - 如何刷新小部件

    当我单击按钮时 刷新不起作用 如果目的是添加到数据库按钮 请按按钮进入屏幕 但就是不更新 我用ajax创建了一个数据网格 我也在ViewModel中写了刷新功能 不刷新可能是什么原因 我的数据是json ajax type GET url
  • 如何使用python中的lambda函数在通过S3连接的AWS athena中进行查询

    我将 csv 文件保存在 S3 存储桶中 我可以使用AWS Athena查询S3的数据 有什么方法可以将 lambda 函数连接到 athena 并从 lambda 函数查询数据 请帮忙 Thanks 正如 Chris Pollard 所说
  • 如何捕捉Tk中的最大化信号?

    您可以通过以下方式将命令与窗口的 X 按钮绑定 wm protocol windowPath WM DELETE WINDOW command 如何对窗口的最大化按钮执行相同的操作 X11 中也没有标准协议ICCCM套 http tronc
  • HTML 选择选项文本等宽

    我正在尝试选择使用等宽字体的选项 以便当您单击下拉菜单时它们会垂直排列 我试图将代码左对齐 后跟破折号 然后是描述 我使用编码空格添加了选项 以便每个选项在破折号之前具有相同数量的字符 但它们仍然没有对齐 我尝试了新的快递和等宽字体 我可以
  • php中相应的嵌套三元运算符? [复制]

    这个问题在这里已经有答案了 我想转换以下if else condition to nested ternary操作员 if projectURL echo projectURL elseif project project url echo
  • 如何知道php邮件发送失败

    我正在从 php mail 发送邮件 如果发送到目的地失败 我希望收到失败消息 to email protected cdn cgi l email protection email from email protected cdn cgi
  • net::ERR_ABORTED 429 仅通过本地主机使用 ipinfo.io

    我想从前端设备获取 IP 地址 我发现this https ipinfo io developers名为 IPINFO io 的免费 API 根据使用 Jquery 获取 IP 地址的文档 我需要做的就是 get https ipinfo
  • 如何在网络驱动程序中检查页面是否已完全加载?

    我正在编写一些 Java Webdriver 代码来自动化我的应用程序 如何正确判断页面是否已加载 该应用程序也有一些 Ajax 调用 我已经声明了对 WebDriver 的隐式等待 硒会为你做到这一点 或者至少它尽力了 有时它会达不到要求
  • 使用 sse 内在函数时如何打破循环?

    m128 pSrc1 m128 string m128 m0 mm set ps1 0 null character while 1 m128 result m128 mm cmpeq ss pSrc1 m0 if character is
  • 子菜单未完全并排定位

    我发现了一个问题 sub menu code left and transform translateX 所以我将位置更改为相对位置并使用上面的两个代码重新定位 它似乎有效 但现在我拥有的两个子菜单不再并排 他们所做的只是相距几厘米顶部 不
  • 为什么我的 NSMutableDictionary 为零?

    我正在尝试将数组存储在 NSMutableDictionary 中 但是 在我为其设置对象后 NSMutableDictionary 为空 这是我的代码 感谢任何帮助 NSMutableArray arrTemp NSMutableArra
  • 验证电子邮件地址

    我正在尝试使用以下代码使用 C 发送电子邮件 MailMessage mail new MailMessage mail From new MailAddress fromAddress friendlyName mail To Add t