2016-12-16 71 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')'或类似的东西? –