0
imaplibを使用してメールサーバーに接続しようとしています。 パスワードを通常の文字列として含めると、「パスワード」 正常に接続されます。しかし、私は少し私のパスワードを難読化しようとしているので、私は以前b64encodeを通してそれを実行し、ログインにb64decodeを使用していた:Py3.4 IMAPLibログイン... 'str'はバッファインターフェイスをサポートしていません
#Works:
mail.login('myloginname', 'myPassword')
#Doesn't Work:
mail.login('myloginname', base64.b64decode('Ja3rHsnakhdgkhervc'))
# or
mail.login('myloginname', bytes(base64.b64decode('Ja3rHsnakhdgkhervc')))
...
Traceback (most recent call last):
File "./testing.py", line 15, in <module>
mail.login('myloginname', bytes(base64.b64decode('Ja3rHsnakhdgkhervc')))
File "/usr/local/lib/python3.4/imaplib.py", line 536, in login
typ, dat = self._simple_command('LOGIN', user, self._quote(password))
File "/usr/local/lib/python3.4/imaplib.py", line 1125, in _quote
arg = arg.replace('\\', '\\\\')
TypeError: 'str' does not support the buffer interface
提案を?
ハ:
'\\'
と'\\\\'
はstr
オブジェクトなのでargs
がbytes
オブジェクトなので、あなただけのargs.replace('\\', '\\\\')
でトレースバックを入手します!私はPy3が文字列の代わりにバイトを求めていることについて多くの記事を読んでいましたが、私はそれを別の方向にキャストすることについても考えませんでした。完璧に働いた。ありがとうございました。 – wolf2600Pythonを初めて使用したため、エラーメッセージが正しく理解されませんでした。 strがサポートしていないと言ったとき、文字列を探しているのではなく、文字列を渡しているのを見ていたと仮定します。 – wolf2600