小编mif*_*mif的帖子

带有长非ascii名称的电子邮件附件

我尝试发送System.Net.Mail.MailMessageSystem.Net.Mail.Attachment.

附件名称是"Счёт-договор№4321от4июля.pdf"

附件创建代码:

var nameEncoding = Encoding.UTF8;
return new System.Net.Mail.Attachment(new MemoryStream(bytes), 
                                      MessageBodiesHelpers.EncodeAttachmentName(fileName, nameEncoding),
                                      attachment.MediaType)
       {
            TransferEncoding = TransferEncoding.Base64,
            NameEncoding = nameEncoding
       };
Run Code Online (Sandbox Code Playgroud)

代码内容MessageBodiesHelpers.EncodeAttachmentName取自https://social.msdn.microsoft.com/Forums/en-US/b6c764f7-4697-4394-b45f-128a24306d55/40-smtpclientsend-attachments-mit-umlauten-im-dateinamen?forum=dotnetframeworkde

如果我将该附件发送到gmail或ms exchange,则附件名称已成功解码.但!

如果我将附件发送到icloud,那么我会得到"???? - ???????№4321от4????.pdf"

邮件附件标题:

来自ms exchange:

Content-Type: application/pdf;
    name="=?utf-8?B?0KHRh9GR0YIt0LTQ?==?utf-8?B?vtCz0L7QstC+0YAg?==?utf-8?B?4oSWNDMyMSDQvtGC?==?utf-8?B?IDQg0LjRjtC70Y8u?==?utf-8?B?cGRm?="
Content-Transfer-Encoding: base64
Content-Disposition: attachment
Run Code Online (Sandbox Code Playgroud)

来自icloud:

Content-Transfer-Encoding: BASE64
Content-Type: APPLICATION/PDF;
    name="????-??????? =?utf-8?B?4oSWNDMyMSDQvtGC?= 4 ????.pdf"
Run Code Online (Sandbox Code Playgroud)

如何格式化icloud的名称?

UPD

如果我将消息从outlook(ms exchange)转发到icloud,则附件名称已成功解码.头:

Content-Transfer-Encoding: BASE64
Content-Disposition: ATTACHMENT;
    size=200702;
    modification-date="Mon, 04 Jul 2016 13:40:22 GMT";
    filename*=utf-8''%D0%A1%D1%87%D1%91%D1%82%2D%D0%B4%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%20%E2%84%964321%20%D0%BE%D1%82%204%20%D0%B8%D1%8E%D0%BB%D1%8F.pdf;
    creation-date="Mon, 04 Jul 2016 13:40:22 GMT"
Content-Type: …
Run Code Online (Sandbox Code Playgroud)

.net c# email encoding email-attachments

10
推荐指数
1
解决办法
1024
查看次数

Windows上奇怪的码头工作状态

命令

$ docker-machine ls
Run Code Online (Sandbox Code Playgroud)

给我

NAME      ACTIVE   DRIVER       STATE     URL   SWARM
default            virtualbox   Timeout
Run Code Online (Sandbox Code Playgroud)

如果我在Docker Toolbox中运行start.sh,我会得到

                    ##         .
              ## ## ##        ==
           ## ## ## ## ##    ===
       /"""""""""""""""""\___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
       \______ o           __/
         \    \         __/
          \____\_______/

host is not running
docker is configured to use the default machine with IP
Run Code Online (Sandbox Code Playgroud)

这个州意味着什么?

docker docker-machine

6
推荐指数
1
解决办法
841
查看次数

coreclr中的Thread.Yield()

在.NET Thread类中有静态方法Yield.
我在Thread的coreclr实现中看到了这个方法.
但是文档不包含Method描述.
此外,.NET CLI(dotnet build)无法使用该方法调用编译代码.
为什么?

upd
运行时: 1.0.0-rc1-update1 coreclr x64 darwin

project.json

{
    "version": "1.0.0-*",
    "compilationOptions":
    {
        "emitEntryPoint": true
    },
    "dependencies":
    {
        "NETStandard.Library": "1.0.0-rc2-*",
        "System.Threading": "4.0.11-rc3-*"
    },

    "frameworks": {
        "dnxcore50": {}
    }
}
Run Code Online (Sandbox Code Playgroud)

upd2
我不会使用Thread.Yield();
我只是想知道为什么coreclr中缺少某些框架功能.

.net c# multithreading coreclr

6
推荐指数
1
解决办法
524
查看次数