【发布时间】:2015-01-16 09:21:58
【问题描述】:
我对 Python 套接字编程的经验绝对为零。我基本上是边走边学。无论如何,我的导师给了我们一个使用这里提供的框架代码创建邮件客户端的任务:http://www.cs.wm.edu/~dnguyen/cs335/project/emailclient.pdf(注意:我不参加 WM。)
我们不允许使用 smtplib。我正在使用 Gmail 发送电子邮件以进行此练习,在进一步阅读后,我发现我必须使用 STARTTLS,然后使用 SSL 的 wrap_socket(),然后再次发送 EHLO。这是我得到的输出,我不知道如何处理它。我在某处读到最后 250 行的意思是因为它在 250 和文本之间没有连字符/破折号 (-)。
220 mx.google.com ESMTP z15sm36730pdi.6 - gsmtp
250-mx.google.com at your service, [xxx.xxx.xxx.xxx]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
220 2.0.0 Ready to start TLS
以下只是我的代码的一部分。由于这是一项个人作业,因此我不想为班上的其他人发布整个代码。如果您想查看其他代码,请询问。
starttls = 'STARTTLS\r\n'
clientSocket.send(starttls)
recv2 = clientSocket.recv(1024)
print recv2
sslClientSocket = ssl.wrap_socket(clientSocket)
sslClientSocket.send(login)
getLogin = sslClientSocket.recv(1024)
print getLogin
sslClientSocket.send(password)
getPass = sslClientSocket.recv(1024)
print getPass
if recv2[:3] != '220':
print '220 tls reply not received from server.'
更多代码信息:在文件的开头,我导入了 ssl 和 base64。我定义了两个变量 'login' 和 'password' 并使用 base64.b64encode() 对它们进行编码。其余代码基于上面提供的骨架代码。我在每个线程的 STARTTLS 之前和之后发送 HELO:Connect to SMTP (SSL or TLS) using Python
如何读取输出以确定发生了什么?提前感谢您的帮助。
【问题讨论】: