Receive replies from Gmail with smtplib - Python

后端 未结 3 848
囚心锁ツ
囚心锁ツ 2020-12-18 00:01

Ok, I am working on a type of system so that I can start operations on my computer with sms messages. I can get it to send the initial message:

import smtpli         


        
相关标签:
3条回答
  • 2020-12-18 00:24

    Instead of SMTP which is used for sending emails, you should use either POP3 or IMAP (the latter is preferable). Example of using SMTP (the code is not mine, see the url below for more info):

    import imaplib
    mail = imaplib.IMAP4_SSL('imap.gmail.com')
    mail.login('myusername@gmail.com', 'mypassword')
    mail.list()
    # Out: list of "folders" aka labels in gmail.
    mail.select("inbox") # connect to inbox.
    
    result, data = mail.search(None, "ALL")
    
    ids = data[0] # data is a list.
    id_list = ids.split() # ids is a space separated string
    latest_email_id = id_list[-1] # get the latest
    
    result, data = mail.fetch(latest_email_id, "(RFC822)") # fetch the email body (RFC822) for the given ID
    
    raw_email = data[0][1] # here's the body, which is raw text of the whole email
    # including headers and alternate payloads
    

    Shamelessly stolen from here

    0 讨论(0)
  • 2020-12-18 00:26

    Uku's answer looks reasonable. However, as a pragmatist, I'm going to answer a question you didn't ask, and suggest a nicer IMAP and SMTP library.

    I haven't used these myself in anything other then side projects so you'll need to do your own evaluation, but both are much nicer to use.

    IMAP https://github.com/martinrusev/imbox

    SMTP: http://tomekwojcik.github.io/envelopes/

    0 讨论(0)
  • 2020-12-18 00:33

    I can suggest you to use this new lib https://github.com/charlierguo/gmail

    A Pythonic interface to Google's GMail, with all the tools you'll need. Search, read and send multipart emails, archive, mark as read/unread, delete emails, and manage labels.

    Usage

    from gmail import Gmail
    
    g = Gmail()
    g.login(username, password)
    
    #get all emails
    mails = g.inbox().mail() 
    # or if you just want your unread mails
    mails = g.inbox().mail(unread=True, from="youradress@gmail.com")
    
    g.logout()
    
    0 讨论(0)
提交回复
热议问题