2016-12-16 44 views
0

要求:我需要存儲有關特定人員的生日信息,並在每個生日發送郵件給所有人。在特定日期使用python發送郵件

我也做了以下內容:

寫Python腳本的HTML文件發送給所有的人。它讀取如下:

import smtplib 

from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

me = "[email protected]" 
you = "[email protected]" 

msg = MIMEMultipart('alternative') 
msg['Subject'] = "Link" 
msg['From'] = me 
msg['To'] = you 

html = """\ 
<html> 
<body> 

<b>HAPPY BIRTHDAY SHERLYN<br></b> 

</body> 
</html> 
""" 

part = MIMEText(html, 'html') 

msg.attach(part) 

mail = smtplib.SMTP('smtp.gmail.com', 587) 

mail.ehlo() 

mail.starttls() 

mail.login('username', 'password') 
mail.sendmail(me, you, msg.as_string()) 
mail.quit() 

還寫了下面的腳本打印生日男孩在某一天的名稱:

import email 
import datetime 
now = datetime.datetime.now() 
a = now.strftime("%d-%B") 

birthdays = { 
      '09-December': ['BOB'], 
      '10-December': ['JOHN'], 
      '16-December': ['SHERLYN'], 

      } 

today_birthdays = birthdays.get(a) 

if today_birthdays: 
    for person in today_birthdays: 
     print "Happy Birthday %s!" % person 
else: 
    print "No Birthday today"  

在第二個腳本的第一條語句:進口電子郵件是包含電子郵件代碼的python文件的名稱。所以,每當我運行上面的腳本,電子郵件就會每天發送[不考慮生日],因爲我在其中導入了電子郵件python文件。

1.)我希望它只在生日時發送電子郵件,而不是在其他日子。

2.)在我的html代碼中,我希望名稱根據生日更改。 例如:在謝林的生日,它應該發送生日快樂Sherlyn

3.)在我的第一個代碼中,我試圖從Gmail帳戶發送電子郵件。 所以,我用:

mail = smtplib.SMTP('smtp.gmail.com', 587)      

但是,如果我不得不從公司發送郵件嗎?

回答

0

您還需要爲每個人發送不同的電子郵件地址。假設沒有重複的名字,你可以用一個單獨的字典name: address來做到這一點。

1.)在您的email.py中,您應該將所有代碼移到一個函數中,以便只在調用函數時才發送電子郵件。目前,所有的代碼都在該模塊的全局範圍內,因此當您執行import時,不會在您要發送電子郵件時執行。你也可以考慮具有該功能需要一個姓名和電子郵件地址作爲參數:

def send_email(name, address): 
    # Skipped the rest of the contents, as they're the same... 
    # just the sending line: 
    mail.sendmail(me, address, msg.as_string()) 

然後從你的第二個腳本,你會打電話email.send_email(person, address)

2)你想查找的東西被稱爲字符串格式化,以及.format方法。對於這一個,你可以這樣做:

​​

然後填寫了:

html.format(name="Sherlyn") 
html.format(name="Bob") 

3)將取決於公司的電子郵件是如何設置的,則可能需要向服務檯或幫助臺的smtp細節。

+0

我已經完成了你要求我的任務。我以這種方式獲取電子郵件:** HAPPY BIRTHDAY {name} ** – prudhvi

+0

您是否在調用format()方法? 'part = MIMEText(html。格式(名稱=名稱),'HTML')'或類似的東西? –