我可以关闭 System.Net.Mail 中的电子邮件地址验证吗?

2024-02-07

我正在尝试使用电子邮件与传真服务器软件通信。传真服务器将接受格式化的 SMTP 邮件并将其转换为传真并将其发送到收件人地址中定义的传真号码。已通过同一服务器从 Outlook 发送电子邮件对此进行了手动测试。

这是我的问题 - System.Net.Mail 抛出一个System.FormatException: The specified string is not in the form required for an e-mail address.由于我尝试发送到的电子邮件地址的格式而导致的异常

有什么方法可以关闭/更改此验证,因为电子邮件地址可能不符合 RFC 标准,但如果电子邮件被发送,它就会起作用

即我想发送到 [RFax:User@/FN=0123456789] 包括方括号

您可以将其作为 Outlook 中的电子邮件地址发送至此

干杯 克里斯

EDIT

这是我用来绕过验证的类的精简版本。有两种方法可以做到这一点 - 一种是重写构造函数并直接设置内部属性,另一种是使用内部构造函数。如果电子邮件地址中有空格,它们的效果略有不同

using System;
using System.Reflection;

namespace Mail
{
    public class UnverifiedEmailAddress : System.Net.Mail.MailAddress
    {
        /// <summary>
    /// Constructor to bypass the validation of MailAddress
    /// </summary>
    /// <param name="address">Email address to create</param>
    public UnverifiedEmailAddress(string address)
        : base("a@a")
    {
        FieldInfo field = typeof(System.Net.Mail.MailAddress).GetField("address", BindingFlags.Instance | BindingFlags.NonPublic);
        field.SetValue(this, address);
    }

    /// <summary>
    /// Static method to create an unverifed email address bypassing the address validation
    /// </summary>
    /// <param name="address">Email address to create</param>
    /// <param name="displayName">Display name for email address</param>
    /// <returns></returns>
    private static System.Net.Mail.MailAddress GetUnverifiedEmailAddress(string address, string displayName)
    {
            ConstructorInfo cons = typeof(System.Net.Mail.MailAddress).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic,
                                                                null,
                                                                new Type[] { typeof(string), typeof(string), typeof(UInt32) },
                                                                null);

            object obj = cons.Invoke(new object[] { address, displayName, UInt32.MinValue });
            System.Net.Mail.MailAddress toAddressObj = (System.Net.Mail.MailAddress)obj;
            return toAddressObj;
        }
    }
}

不,您无法关闭该验证。

EDIT:

稍微研究一下之后,似乎以下代码片段是一个可行的解决方法:

ConstructorInfo ctor = typeof(MailAddress).GetConstructor(
    BindingFlags.NonPublic | BindingFlags.Instance, null,
    new Type[] { typeof(string), typeof(string), typeof(string) }, null);

MailMessage msg = new MailMessage
{
    To = { (MailAddress)ctor.Invoke(new object[] { null, "[RFax:User", "/FN=0123456789]" }) }
};

这里有两个技巧。第一个是使用内部MailAddress不解析/验证提供的地址的构造函数。

第二个技巧是将@符号上的“传真地址”分开并将其作为两部分传递(user and domain)。这是必需的,因为 SMTP To-header 稍后由框架使用MailAddress.Address财产,并且该财产返回user + @ + domain.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以关闭 System.Net.Mail 中的电子邮件地址验证吗? 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 在 Ubuntu 14.04 上运行没有 sudo 的 docker [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试设置 Docker 这样我就不必输入sudo在使用它之前 我采取的步骤 我首先创建一个 docker 组sudo groupadd
  • 用Python永久存储字典的优雅方法?

    目前解析文件的成本很高 该文件会生成约 400 个键值对的字典 并且很少更新 以前有一个函数可以解析文件 以字典语法将其写入文本文件 即dict Adam Room 430 Bob Room 404 等 并将其复制并粘贴到另一个函数中 该函
  • 如何使用 google customsearch API 查询高级搜索?

    我如何以编程方式使用 Google Python 客户端库执行高级搜索 https www google ca advanced search用Google自定义搜索API搜索引擎以返回第一个列表n基于我查询的高级搜索的某些术语和参数的链接
  • 天文应用

    我正在尝试构建一个天文学应用程序 在其中我应该显示给定纬度 经度和时间的天顶处和天顶附近的星星 我了解位置天文学的基础知识 令我困惑的是如何用大量数据创建数据库 我的查询是 更喜欢哪个目录 喜欢依帕谷目录或亨利 德雷珀 它的优点和缺点是什么
  • Java控制台程序

    我想知道如何制作一个Java控制台程序 我使用 Eclipse 作为 IDE 正在寻找类似于 C 版本的控制台程序的东西 尝试 Google 但只找到导出到 JAR 并从命令行执行的解决方案 我更喜欢在控制台窗口中编译并直接测试 提前致谢
  • JavaScript 文本操作

    使用 JavaScript 我想用一些文本替换 anytext 之间的任何文本 我想让它通用 所以我想使用正则表达式 我该怎么做 示例 replace hello Hi 尝试这个 str replace g Hi 这将删除任何序列 全球范围
  • jquery 中 $('selector')[0] 和 $('selector').eq(index) 之间的区别。

    有什么区别 div1 a 0 and div1 a eq 0 对于以下标记 div a href click a div 请帮忙 div1 a 0 返回对 DOM 元素的直接引用 div1 a eq 0 返回一个 JQuery 对象 htt
  • 删除tinyMCE中多余的p标签

    当您从 Word 文档复制并粘贴到 tinyMCE 编辑器时 有时会出现不需要的内容 p tags p p nbsp p div class starpasspro example question p strong Example Lev
  • javascript - 检测到浏览器/选项卡关闭时发出警报

    我有这个代码 当我单击链接 or refresh or 关闭选项卡 但我需要警惕only on close窗口 选项卡 这个怎么做 我的网站上有许多外部和内部链接
  • 如何通过命令行构建Windows 10 appxupload(准备提交存储)包

    尝试使用 msbuild 命令行作为msbuild App1 sln t Publish p Configuration Release并按照中所述进行了尝试http blogs msdn com b wsdevsol archive 20
  • 向后播放 CABasicAnimation 后 CALayer 消失

    我有一个 CALayer 并向其中添加了一个 CABasicAnimation 如下所示 circle CALayer circle frame CGRect x 0 y 0 width 100 height 100 circle back
  • 在 OpenIddict 中处理请求时发生未处理的异常

    所以 我正在尝试实现 OpenIddict 版本1 0 0 beta2 0580 with NET core 1 1我收到以下错误 An unhandled exception occurred while processing the r
  • 如何从上到下逐步显示 ImageView

    有没有办法从上到下逐步显示 ImageView 像这样 抱歉动画很糟糕 我对 android 动画不太熟悉 但一种 有点黑客 方法是将图像包装在ClipDrawable并为其设置动画level价值 例如
  • 在模板 Vue 中插入脚本标签

    我正在创建一个集成支付服务 支付服务为我提供了form里面有一个脚本标签 我想在我的组件模板中插入带有脚本标签的表单 但是 vue 不允许在模板中插入标签脚本 如何在模板组件中插入带有脚本标签的表单 结账表格支付服务
  • Asus MeMO Pad 没有驱动程序可以使用 eclipse 进行应用程序调试

    我有同样的问题 如下所示SO post https stackoverflow com questions 15029581 asus memo pad debug for android apps 我得到了一个新的 Asus Memo P
  • 如果数组为 NULL,则不会出现“未定义的偏移量”

    我不确定这是一个错误 所以任何人都可以告诉为什么如果您尝试访问未定义为 NULL 的数组的键 php 不显示通知吗 文件说 Converting NULL to an array results in an empty array 因此 访
  • 根据 WPF 中的 TextBox 文本属性启用/禁用按钮?

    我正在通过谷歌寻找代码 该代码可以根据文本框中的文本属性启用和禁用按钮 如果文本框有一些文本 则应启用按钮 否则应禁用按钮 我得到了一些代码 但是 xaml 中的代码 但没有 c 我无法理解它是如何工作的 请帮助我理解以下代码的行为
  • 我应该直接向新学习者教授 CSS 布局,还是应该先教如何使用表格进行布局,然后再教授如何进行无表格布局?

    我应该直接向新学习者教授 CSS 布局还是应该先教如何使用表格进行布局 然后再教 div CSS 之间我应该教什么HTML 还是 XHTML 两者是相同的 所以我应该直接从 XHTML 1 0 Strict 开始吗 您应该教他们使用 CSS
  • 如何用AVPlayer解析m3u文件

    我想从 m3u 文件头而不是 id3Tags 获取曲目信息 在AVPlayer的timedMetaData它只是提供了 id3Tag 解析的属性 如何使用 AVPlayer 从以下 m3u 文件中获取标题 艺术家 url 等 EXTM3U
  • 我可以关闭 System.Net.Mail 中的电子邮件地址验证吗?

    我正在尝试使用电子邮件与传真服务器软件通信 传真服务器将接受格式化的 SMTP 邮件并将其转换为传真并将其发送到收件人地址中定义的传真号码 已通过同一服务器从 Outlook 发送电子邮件对此进行了手动测试 这是我的问题 System Ne