- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在用 C++ 编写电子邮件客户端,使用 Winsock2 API 从 Gmail 帐户通过 SMTP 发送电子邮件。我没有使用任何其他第三方库。
我已经通过端口587(用于TLS)连接到Gmail服务器并发送了基本的EHLO和STARTTLS命令,但我的问题是,在发送STARTTLS命令后我应该具体发送什么数据?
为清楚起见,这是服务器输出:
显然 TLS 握手是在 STARTTLS 命令之后进行的,但是在 TLS 握手期间必须发送的第一条和后续数据是什么?根据我的阅读,它应该是二进制数据交换安全证书等,但我找不到具体应该首先发送哪些数据。
我搜索了许多与此类似的问题,但没有找到说明必须在 STARTTLS 之后发送的特定数据的答案。我知道 OpenSSL 的存在,我不会接受任何告诉我安装它的答案。
最佳答案
SMTP STARTTLS
命令的语义和处理规则记录在 RFC 3207 中.
在您收到对 STARTTLS
命令的成功 220 响应后,您必须开始 TLS 握手以建立加密以加密/解密后续 SMTP 命令/响应。握手完成后,SMTP 状态将重置,因此您必须发出新的(现已加密的)EHLO
命令,然后根据需要继续执行剩余的(加密的)SMTP 命令。
MSDN 记录了 Transport Layer Security Protocol 的高级概述, 以及 TLS Handshake Protocol 的分步说明.每个步骤的具体细节记录在 RFC 2246 的第 7 节中(TLS 1.0), RFC 4346 (TLS 1.1) 和 RFC 5246 (TLS 1.2)。
因此,除非您打算从头开始实现 TLS(请不要!!),否则您需要使用第三方库,例如 OpenSSL,或者您可以使用 Microsoft 的 Secure Channel API,为您处理 TLS 握手和后续加密。
关于c++ - 向电子邮件服务器发送 STARTTLS 命令后必须发送哪些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661956/
我有以下代码: import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException
我正在尝试使用 Vala 和 GLib + GIO 实现一个简单的 SMTP 服务器。 到目前为止,纯文本通信没有问题,但当涉及使用 STARTTLS 的 TLS 时,事情会变得更加困难。 这是我到目
每次有人运行 apacheant 来更新我们的实时服务器时,我都会尝试向我的团队发送电子邮件,我尝试通过 GMAIL 发送电子邮件,但是当我运行 ant upload_live -d 时,我收到以下错
我能够通过 IP 和端口连接到所需的套接字。 - (void)socket:(GCDAsyncSocket *)sender didConnectToHost:(NSString *)host por
我正在尝试为我在办公室网络上运行的小型监控脚本设置一些基本的电子邮件功能。在我的 Ubuntu 10.10 服务器上运行脚本(见下文)工作正常,但是当我在 Windows 桌面计算机上运行它时,它会在
我是 python 的新手。我已经对 python 的鸭子类型进行了一些研究,但我遇到了如下情况。 当我查看 Python 标准库时,我发现 API 仅指定参数名称,这些名称似乎提示要传递的内容但类型
最近似乎支持 SSL/TLS added通过 SecureSocket 到 Dart类,这很棒。 所以,例如这个 SecureSocket.connect(_host, _port).then(
我正在尝试使用 TLS 连接到 apacheds,但我得到了一个 LdapOperationException: PROTOCOL_ERROR:服务器将断开连接! 这是我的代码: LdapNetwor
我正在尝试使用 STARTTLS 命令发送电子邮件。我在 Gmail 中设置了一个测试帐户,并将其设置为仅接受具有 TLS 连接的入站电子邮件。 由于我不想深入的原因,我无法使用 JavaMail 或
所以我有一个简单的(仍然需要工作!)python/twisted 邮件服务器,它支持纯文本/TLS 邮件。我还刚刚使用 smtplib 编写了一个简单的客户端程序。 如果我使用 telnet 连接到我
我正在用 C++ 编写电子邮件客户端,使用 Winsock2 API 从 Gmail 帐户通过 SMTP 发送电子邮件。我没有使用任何其他第三方库。 我已经通过端口587(用于TLS)连接到Gmail
我正在尝试通过 log4j 发送错误电子邮件。通过使用以下附加程序:
这可能是一个重复的问题,但我仍然面临着这方面的问题,希望有解决方案。提前致谢。 我正在尝试通过公司的服务器发送邮件 我目前使用的是 Python 2.6 版和 Ubuntu 10.04 这是我得到的错
我正在使用我的 Gmail 帐户运行这个简单的示例,但它不起作用并出现以下错误: send failed, exception: com.sun.mail.smtp.SMTPSendFai
我正在尝试使用以下代码使用 sendmailR 包从 R 发送电子邮件,不幸的是失败了: ## Set mail contents from ', Sys.info()[4]) to ' subjec
在设置我的 session 时,我正在设置 starttls.enable 和 .required 属性,但是当连接发生时,它应该会根据文档失败: mail.smtp.starttls.enable
我正在尝试在sendmail中启动tls,但我不知道如何使用证书。请给我建议方法 > telnet localhost 25 Trying 127.0.0.1... Connected to loca
我尝试使用 STARTTLS 通过 php 和 swiftmailer 发送电子邮件,但收到证书错误。我拥有 SMTP 服务器的 root 访问权限,并且使用的证书是自签名的。我在两台机器上都使用 D
我尝试通过 postfix 通过 gmail 发送电子邮件,但它显示以下错误: 必须首先发出 STARTTLS 命令。 Sep 6 01:11:34 NovusTec postfix/smtp[10
我想实现 STARTTLS在 iOS 应用程序中,但我无法从文档中弄清楚如何去做。 到目前为止我有: 我使用 CFStreamCreatePairWithSocketToHost 创建套接字并打开流:
我是一名优秀的程序员,十分优秀!