SmtpClient发送邮件遭遇The specified string is not in the form required for a subject.

通过System.Net.Mail发送邮件,出现错误:

System.ArgumentException: The specified string is not in the form required for a subject.    at System.Net.Mail.Message.set_Subject(String value)    at System.Net.Mail.MailMessage.set_Subject(String value)

通过Reflector代码看到 System.Net.Mail.MailMessage 的Suject调用了内部方法MailBnfHelper.HasCROrLF

internal string Subject
{
    get
    {
        return this.subject;
    }
    set
    {
        if ((value != null) && MailBnfHelper.HasCROrLF(value))
        {
            throw new ArgumentException(SR.GetString("MailSubjectInvalidFormat"));
        }
        this.subject = value;
        if (((this.subject != null) && (this.subjectEncoding == null)) && !MimeBasePart.IsAscii(this.subject, false))
        {
            this.subjectEncoding = Encoding.GetEncoding("utf-8");
        }
    }
}
 

相应的解决方案是采用下述代码

message.Subject = subject.Replace('\r', ' ').Replace('\n', ' ')

这本来应该是Subject应该处理得事情,却要让我们来处理,这该算是微软的程序员写的臭代码。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的小碗汤

自动评论csdn博客文章实现

今天我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。

2002
来自专栏yukong的小专栏

【java并发编程实战2】无锁编程CAS与atomic包1、无锁编程CAS2、 atomic族类

如果V值等于E值,则将V的值设为N。若V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。通俗的理解就是CAS操作需要我们提供一个期望值,当期望...

1223
来自专栏张善友的专栏

Contact Manager Web API 示例[1]CRUD 操作

联系人管理器web API是一个Asp.net web api示例程序,演示了通过ASP.NET Web API 公开联系信息,并允许您添加和删除联系人,示例地...

2269
来自专栏Phoenix的Android之旅

曾经被面试过BlockingQueue吗?

想必很多人面试时有被问到阻塞队列的经历。我们经常会在各种代码中见到或者用到它,最经常见到的地方就是线程池。

801
来自专栏逸鹏说道

C#进阶系列——WebApi 接口参数不再困惑:传参详解 下

(1)基础类型数组 var arr = ["1", "2", "3", "4"]; $.ajax({ type: "post", ...

3066
来自专栏崔庆才的专栏

腾讯云上 Winpcap 网络编程四之主机通信

由于腾讯云上提供了Windows系统,所以我们这次Winpcap编程选用腾讯云主机实验,让大家简要了解两台云主机的通信方法以及实践过程。

5730
来自专栏me的随笔

ASP.NET MVC5中的Model验证

Model验证是ASP.NET MVC中的重要部分,它主要用于判断输入的数据类型及值是否符合我们设定的规则,这篇文章就介绍下ASP.NET MVC中Model验...

1562
来自专栏码神联盟

Shiro系列 | 《Shiro开发详细教程》第四章:Shiro中Ini配置

之前章节我们已经接触过一些 INI 配置规则了,如果大家使用过如 Spring 之类的 IOC/DI 容器的话,Shiro 提供的 INI 配置也是非常类似的,...

2042
来自专栏mathor

request.getPramamter()的用法

 action:目标地址,把请求交给谁处理;action可以不设置,也可以是空字符串(提交给自己处理)

3011
来自专栏大内老A

[WCF权限控制]从两个重要的概念谈起:Identity与Principal[下篇]

毫不夸张地说,安全主体(Principal)是整个授权机制的核心。我们可以简单地将将安全主体定义成能够被成功实施授权的主体。一个安全主体具有两个基本的要素:基于...

2328

扫码关注云+社区

领取腾讯云代金券