私は現在この課題を書いていますが、何年も前に私は同じ問題を抱えていました。さらに検索すると、さまざまなことを試してもらえましたが、ログイン部分を過ぎることはできません。Python経由でGmail SMTPにアクセスする - AUTHの問題
from socket import *
from ssl import *
msg = "\r\n I love computer networks!"
endmsg = "\r\n.\r\n"
clientSocket = socket(AF_INET, SOCK_STREAM)
mailserver = getaddrinfo('smtp.gmail.com',465, AF_INET, SOCK_STREAM, IPPROTO_TCP)[0][4]
clientSocket = wrap_socket(clientSocket)
clientSocket.connect(mailserver)
recv = clientSocket.recv(1024)
print recv
if recv[:3] != '220':
print '220 reply not received from server.'
clientSocket.send('EHLO Nolan\r\n')
recv = clientSocket.recv(1024)
print recv
if recv1[:3] != '250':
print '250 reply not received from server.'
clientSocket.send('AUTH LOGIN ' + 'my Google email'.encode('base64','strict'))
recv = clientSocket.recv(1024)
print recv
print recv.split()[1].decode('base64')
clientSocket.send("my password".encode('base64','strict'))
recv = clientSocket.recv(1024)
print recv
# And onto other tasks
私はSSLとの接続を開始すると、私はSTARTTLS
を必要としない印象の下です。 AUTH LOGIN
をAUTH PLAIN
に変更すると、デコード方法がわかりません。 PLAIN
を使用してもエンコードしないと、プログラムがハングするだけです。私が "\ n \ r"(エンコードされていない)で終了すると、パイプが壊れてしまいます。上記のコードを使用して、私はパスワード要求を得る。
次にパスワードを送信します。535-5.7.8 Username and Password not excepted.
私は同じパスワードを使用していますか?!?安全性の低いデバイスを許可するようにアカウントを設定しました。 2段階認証プロセスが開始されました。私のpythonアプリケーションではなく、携帯電話向けのプロセスが開始されたようです。
私はRFC5321がそうであるべきだと思うので、私はEHLO
に自分のIPを使用するように変更しました。関係ない。私はRFC 4954を通じて見てきた
...
私は見当もつかない"AUTH PLAIN " + encode_base64("\0%s\0%s" % (user,pass),eol='')
だけでハングアップします...待って...
を明らかにsmtplib
に掘りました。
アップデートは私が提出したすべての文字列を出力するsmtplib
を変更しました。これはさらに私を混乱させる:
ehlo [127.0.1.1]
AUTH PLAIN [almost forgot one can decode this base64]==
mail FROM:<[gmail account]>
rcpt TO:<[hotmail account]>
data
quit
私AUTH
文字列はまったく同じですが、それがハングアップします。そして私は私のホットメールアカウント(smtplibを使用して、私のコードではない)で電子メールを受け取ります。
あなたは 'SMTP_SSL()'、ポート '465'を必要とし、まあそこ' STARTTLS() ' – furas
@furasせず屋に行きます。情報ありがとう –
ありがとうございます。 :) Unfort私はタスクを目的としたライブラリを使用して課題を回避しているので、私はそれを使用できません...しかし、それは機能します(サイレントに終了します)。私がやっていないことを理解する。 –