c# - .NET 如何在 Azure Windows Server 2012 上解密来自 AT&T gophone 的短信

标签 c# .net email azure sms

我编写了一个很酷的 .NET Windows 应用程序,它通过 SMS 文本消息或通过电子邮件与用户进行通信。它像对待电子邮件一样对待短信。当我的 Windows Server 2012 收到来自移动设备的文本消息或电子邮件时,这两种消息都会到达 C:\inetpub\mailroot\Drop\并且我的应用程序会处理它们。

对于来自 Gmail、Hotmail 等的电子邮件以及来自 Verizon 的短信,一切都运行良好。但后来我的 friend 过来了,我们测试从他的 AT&T 手机接收信号……天哪!我从他的移动设备的短信中收到了电子邮件(见下文),一切看起来都很正常,只是实际的短信负载被扰乱了。

如何解扰?首先为什么文本会被打乱?

X-SENDER: ##########@MMS.ATT.NET
X-RECEIVER: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bbc3c3c3c3c3c3c3c3c3c3fbc3c3c3c3c3c3c395f8f4f6" rel="noreferrer noopener nofollow">[email protected]</a>
RECEIVED: FROM BTHCEG-MOMTA01-MMS.MYCINGULAR.NET ([]) BY WITH MICROSOFT SMTPSVC(8.5.9600.16384);
     MON, 5 JUN 2017 17:42:02 -0700
RETURN-PATH: <##########@@MMS.ATT.NET>
RECEIVED: FROM [] ([:14264] HELO=ALPNMS03)
    BY BTHCEG-MOMTA01 (ENVELOPE-FROM <##########@@MMS.ATT.NET>)
    (ECELERITY 3.0.23.37692 R(37717)) WITH ESMTP
    ID D2/65-04620-B5AF5395; MON, 05 JUN 2017 17:42:03 -0700
X-MMS-MESSAGE-TYPE: M-SEND-REQ
X-MMS-TRANSACTION-ID: 1496709721-5
X-MMS-MMS-VERSION: 1.2
TO: PRAY@##########@COM
FROM: ##########@@MMS.ATT.NET
DATE: MON, 5 JUN 2017 20:42:02 -0400 (EDT)
X-MMS-SENDER-VISIBILITY: SHOW
CONTENT-TYPE: MULTIPART/MIXED; 
    BOUNDARY="----=_PART_7984369_300459990.1496709722943"
MIME-VERSION: 1.0
MESSAGE-ID: <1096997833.194273661496709722943.JAVAMAIL.NEMS@ALPNMS03>
X-ORIGINALARRIVALTIME: 06 JUN 2017 00:42:02.0454 (UTC) FILETIME=[B6A1AF60:01D2DE5D]

------=_PART_7984369_300459990.1496709722943
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

............下面是乱码文本消息:............

TXKGCHJHEWVYIGLZOIBMB3IGSGVPZGKGDG8GAGF2ZSBWZWFJZSBPBIBOZXIGZMFTAWX5

......实际的信息是:“我的祈祷是:让海蒂在她的家庭中拥有和平” ---=_PART_7984369_300459990.1496709722943--

X-SENDER: ##########@@MMS.ATT.NET
X-RECEIVER: PRAY@##########@.ORG
RECEIVED: FROM BTHCEG-MOMTA02-MMS.MYCINGULAR.NET ([##########@]) BY PRAYSHEP WITH MICROSOFT SMTPSVC(8.5.9600.16384);
     MON, 5 JUN 2017 18:14:30 -0700
RETURN-PATH: <##########@@MMS.ATT.NET>
RECEIVED: FROM [##########@] ([##########@:51516] HELO=ALPNMS03)
    BY BTHCEG-MOMTA02 (ENVELOPE-FROM <##########@@MMS.ATT.NET>)
    (ECELERITY 3.0.23.37692 R(37717)) WITH ESMTP
    ID 29/CD-12903-7F106395; MON, 05 JUN 2017 18:14:31 -0700
X-MMS-MESSAGE-TYPE: M-SEND-REQ
X-MMS-TRANSACTION-ID: 1496711669-7
X-MMS-MMS-VERSION: 1.2
TO: PRAY@##########@.ORG
FROM: ##########@@MMS.ATT.NET
DATE: MON, 5 JUN 2017 21:14:30 -0400 (EDT)
X-MMS-SENDER-VISIBILITY: SHOW
CONTENT-TYPE: MULTIPART/MIXED; 
    BOUNDARY="----=_PART_7989525_395020720.1496711670941"
MIME-VERSION: 1.0
MESSAGE-ID: <1241288163.194397521496711670942.JAVAMAIL.NEMS@ALPNMS03>
X-ORIGINALARRIVALTIME: 06 JUN 2017 01:14:30.0518 (UTC) FILETIME=[3FC4A960:01D2DE62]

------=_PART_7989525_395020720.1496711670941
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

.......从短信中乱码的短信:....... QWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFH …………实际都是“啊啊啊啊啊……” ---=_PART_7989525_395020720.1496711670941--

最佳答案

所以这个 HttpRequest 是一个多部分表单。

每个文件都在边界之间分割:

BOUNDARY="----=_PART_7984369_300459990.1496709722943"

然后每个文件都有自己的一组信息:

------=_PART_7984369_300459990.1496709722943
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

此边界具有 CONTENT-TRANSFER-ENCODING header ,这意味着其所有内容 (TEXT_0.TXT) 均编码为 BASE64 .

我查看了您发布的消息内容,它应该区分大小写,导致 TXkgcHJheWVyIGlzOiBmb3IgSGVpZGkgdG8gaGF2ZSBwZWFjZSBpbiBoZXIgZmFtaWx5,因此您可能会遇到一些数据损坏,或者您查看编码的方式正在更改它.

我无法提供代码示例,因为我不确定您使用的是 Webforms 还是 MVC,但这里有一个 example使用 asp.net MVC Web Api 2

关于c# - .NET 如何在 Azure Windows Server 2012 上解密来自 AT&T gophone 的短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403584/

相关文章:

c# - 两个列表的区别 C#

c# - 我有一个为 ViewState 赋值的控件。它有效,但 ViewState 被禁用。如何?

c# - 问答审计软件的设计模式

java - 尽管日志中没有错误,但电子邮件发送在 Google App Engine 上不起作用

c# - LinkBut​​ton 打开新窗口选项卡

.net - 为什么 .NET 4 中的类不是协变的?

.net - 如何获取当前 Windows 用户的 *network* 身份,而不是他们的交互式登录身份?

python - 使用python和imaplib的gmail登录失败

android - ACTION_SEND 强制发送电子邮件

c# - 用于事务性文件系统访问的 .net 持久资源管理器