要求 :我需要存储有关某些人生日的信息,并在每个生日时向所有人发送邮件。
我做了以下事情:
写了python脚本,向所有人发送html文件。它内容如下:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
me = "hunter@gmail.com"
you = "prudhvi@gmail.com"
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的生日那天,它应该发送生日快乐Sherlyn
3。)在我的第一个代码中,我正在尝试从Gmail帐户发送电子邮件。 所以,我用过:
mail = smtplib.SMTP('smtp.gmail.com', 587)
但是,如果我必须从公司邮件发送它怎么办?
答案 0 :(得分: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 = """\
<html>
<body>
<b>HAPPY BIRTHDAY {name}<br></b>
</body>
</html>
"""
然后填写:
html.format(name="Sherlyn")
html.format(name="Bob")
3.。)将取决于您的公司电子邮件的设置方式,您可能需要向服务台或服务台询问smtp详细信息。