免责声明:初学者
嗨,我正在尝试构建一个格式化的电子邮件发件人。我希望它能够将电子邮件发送到用户输入的电子邮件列表,并将其格式化为名称列表,以便它发送已格式化的每个电子邮件。有人知道这样做的方法吗?
我也希望它没有列表中没有名称的格式。因此,当列表中没有名称时,电子邮件将仅显示为“嗨!等等”。
当前,它将格式化名字,但是只会发送一封电子邮件,并且会将列表中的所有其他名称格式化为一封电子邮件(显示为“嗨,本·戴夫”)。
在有人建议使用该方法之前,我正在使用另一个使用.csv文件的模型,但是我想使用输入列表作为模型,如果无其他,只看它如何以及是否可以使用。工作。
还应归功于python Codex,应归功于python。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
host = "smtp.gmail.com"
port = 587
username = "xxx@gmail.com"
password = "xxx"
from_email = username
to_list = input('Please enter emails seperated by a comma: ')
Name_list = input('Please enter names seperated by a comma: ')
email_conn = smtplib.SMTP(host, port)
email_conn.ehlo()
email_conn.starttls()
email_conn.login(username, password)
the_msg = MIMEMultipart('alternative')
the_msg['Subject'] = "Link"
the_msg["From"] = "xxx@gmail.com"
the_msg["To"] = to_list
plain_txt = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
html_txt = """\
<html>
<head></head>
<body>
<p>Hi {name}!<br>
How are you?<br>
Here is the <a href="http://www.python.org">link</a> you wanted.<br>
<img src="cid:image1">
</p>
</body>
</html>
""".format(name=Name_list)
fp = open('/Users/xxx/xxx.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID', '<image1>')
the_msg.attach(msgImage)
part_1 = MIMEText(plain_txt, 'plain')
part_2 = MIMEText(html_txt, "html")
the_msg.attach(part_1)
the_msg.attach(part_2)
print(the_msg.as_string())
from smtplib import SMTP, SMTPAuthenticationError, SMTPException
pass_wrong = SMTP(host, port)
pass_wrong.ehlo()
pass_wrong.starttls()
try:
pass_wrong.login(username, "wrong_password")
pass_wrong.sendmail(from_email, to_list, "")
except SMTPAuthenticationError:
print("Message sent")
except:
print("an error occured")
pass_wrong.quit()
email_conn.sendmail(from_email, to_list, the_msg.as_string())
email_conn.quit()