簡體   English   中英

使用Gmail發送電子郵件的Python腳本

[英]Python script to send email using Gmail

我對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: 使用Python連接到SMTP(SSL或TLS)

如何讀取輸出以確定發生了什么? 預先感謝您的幫助。

...並且進一步閱讀后,我發現我必須使用STARTTLS ...我在SO上的某個地方讀到,最后250行意味着某些內容,因為它在250和文本之間沒有連字符/破折號(-)。

您問有關標准中明確定義的行為的問題。 我建議您閱讀相關的標准RFC 2821RFC3207 ,以了解協議,而不是嘗試從一些stackoverflow帖子中猜測協議的詳細信息。 即使不允許直接使用代碼,您也可以查看smtplib的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM