簡體   English   中英

使用python和gmail在同一線程中發送多封電子郵件

[英]Send multiple emails in the same thread using python and gmail

我正在運行一個程序。 當該程序得到結果時,它將使用以下功能向我發送電子郵件:

def send_email(message):

    import smtplib

    gmail_user = OMITTED
    gmail_pwd = OMITTED
    FROM = OMITTED
    TO = OMITTED #must be a list

    try:
        #server = smtplib.SMTP(SERVER) 
        server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
        server.ehlo()
        server.starttls()
        server.login(gmail_user, gmail_pwd)
        server.sendmail(FROM, TO, message)
        #server.quit()
        server.close()
        print 'successfully sent the mail'
    except:
        print "failed to send mail"  

免責聲明:我在Stack Overflow的某處找到了此代碼。 不是我的 我刪去了某些部分,因為它們似乎沒有特殊意義。

有時我的代碼會得到很多結果,並且我在不到20秒的時間內收到了150多種不同的電子郵件。

如何修改上面的函數,以便程序在同一線程中將所有結果發送給我?

如果您不明白我的意思,我希望我的收件箱看起來像這樣:

sender@gmail.com(150) ...  
... (other emails from other senders)  

代替:

sender@gmail.com ...  
sender@gmail.com ...  
sender@gmail.com ...  
sender@gmail.com ...  
sender@gmail.com ...  
...  
sender@gmail.com ...  
... (other emails from other senders)

編輯

為了解決該問題,我要做的就是重新插入我先前刪除的代碼部分。 全部功能是這一功能:

def send_email(TEXT):

    import smtplib

    gmail_user = OMITTED
    gmail_pwd = OMITTED
    FROM = OMITTED
    TO = OMITTED #must be a list
    SUBJECT = "Big brother candidate"
    #TEXT = "Testing sending mail using gmail servers"

    # Prepare actual message
    message = """\From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

    try:
        #server = smtplib.SMTP(SERVER) 
        server = smtplib.SMTP("smtp.gmail.com", 587) #or port 465 doesn't seem to work!
        server.ehlo()
        server.starttls()
        server.login(gmail_user, gmail_pwd)
        server.sendmail(FROM, TO, message)
        #server.quit()
        server.close()
        print 'successfully sent the mail'
    except:
        print "failed to send mail"  

這是一個古老的問題,但是我不得不回答這個問題,因為有一種方法可以執行OP想要的操作。 您可以通過在郵件中添加標題,並在發送另一封電子郵件時引用它們來實現。 例如

from email.utils import make_msgid

my_id = make_msgid()

#Build your email as you normally do, and add ID as a message header
message = MIMEMultipart()
message["Message-ID"]  = my_id 
message["Subject"] = "test"
message["From"] = from_email 
# ...etc and send your email using smtp.sendmail

# On the reply (or when sending another email), add the following headers
message["In-Reply-To"] = my_id
message["References"] = my_id

# ...send your email using smtp.sendmail

當您檢查郵件客戶端時,您會看到后一封電子郵件將作為對前一封電子郵件的回復而發布,從而創建了通常在常用電子郵件客戶端(Gmail,收件箱,Outlook,Yahoo等)中看到的線程。

這似乎不是關於發送電子郵件的問題,但是如何將它們組織到GMail可以正確地將它們線程化。

有關線程如何工作的描述,請參見本頁 基本上,您需要后續的電子郵件在主題行的開頭包含“ Re:”。 由於您沒有顯示生成消息的代碼,因此我無法說出您可能如何執行此操作。

暫無
暫無

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

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