2017-08-01 6 views
0

私は多くのコードにアクセスして電子メールのコンテンツを読んだことがあります。たとえば、Gmailについては認証しかできず、Outlookではメールを読むことができるコードがあります。今は電子メールにしかアクセスせず、暗号化された情報を出力しません。だから私はこれを解決するために助けが必要です。おかげPython 3で電子メールコンテンツを読む方法

は、ここでは、コードです:

import imaplib 
import base64 

email_user = input('Email: ') 
email_pass = input('Password: ') 

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993) 
M.login(email_user, email_pass) 
M.select() 
typ, data = M.search(None, 'ALL') 
for num in data[0].split(): 
    typ, data = M.fetch(num, '(RFC822)') 
    num1 = base64.b64decode(num1) 
    data1 = base64.b64decode(data) 
    print('Message %s\n%s\n' % (num, data[0][1])) 
M.close() 
M.logout() 
+0

何を取得していますか?あなたは何を期待していますか? – Nabin

+0

私は電子メールのみの認証を取得しています。私は受信ボックスの電子メールのコンテンツを表示できる出力を期待しています – Ricardo91

答えて

0

私はとにかく自分のコードをチェックしました、とのコメントがいくつかあります。最初のコードは、ここにコードを貼り付けたときにコンマが取り除かれているようです。私はそれらを元に戻そうとしましたので、私のコードがあなたのものと一致することを確認してください。 Outlookにアクセスできない場合は、私の提案をテストすることはできません。

それが正しく再構成されています、あなたはデコード、ライン14上のライン上のデータへ)13.

をライン10上のメッセージリストのデータを呼び出しますが、(フェッチ呼び出しの再割り当てする結果と仮定すると、

import imaplib 
import base64 
email_user = input('Email: ') 
email_pass = input('Password: ') 

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993) 
M.login(email_user, email_pass) 
M.select() 

typ, data = M.search(None, 'ALL') 

for num in data[0].split(): 
    typ, data = M.fetch(num, '(RFC822)') # data is being redefined here, that's probably not right 
    num1 = base64.b64decode(num1)   # should this be (num) rather than (num1) ? 
    data1 = base64.b64decode(data) 
    print('Message %s\n%s\n' % (num, data[0][1])) # don't you want to print num1 and data1 here? 

M.close() 
M.logout() 

num1はまだ定義されていません。数字がデコードする必要があるかどうかはわかりませんが、ちょっと変わったようです。

オンラインでは、デコードしたものではなく、エンコードされた値を印刷しています。私はあなたが役に立てば幸い

import imaplib 
import base64 
email_user = input('Email: ') 
email_pass = input('Password: ') 

M = imaplib.IMAP4_SSL('imap-mail.outlook.com', 993) 
M.login(email_user, email_pass) 
M.select() 

typ, message_numbers = M.search(None, 'ALL') # change variable name, and use new name in for loop 

for num in message_numbers[0].split(): 
    typ, data = M.fetch(num, '(RFC822)') 
    # num1 = base64.b64decode(num)   # unnecessary, I think 
    print(data) # check what you've actually got. That will help with the next line 
    data1 = base64.b64decode(data[0][1]) 
    print('Message %s\n%s\n' % (num, data1)) 

M.close() 
M.logout() 

ような何かをしたいかもしれないと思います。

関連する問題