【问题标题】:Send personalized email with pythom使用 python 发送个性化电子邮件
【发布时间】:2020-11-21 16:02:30
【问题描述】:

我是一名初学者,正在尝试使用 python 发送个性化电子邮件。

import smtplib, ssl

def read_creds():
    user = passw = ""
    with open("credentials.txt", "r") as f:
        file = f.readlines()
        user = file[0].strip()
        passw = file[1].strip()

    return user, passw


port = 465

sender, password = read_creds()

receive = sender

message = """\
Subject: Python

This is from python!
"""

context = ssl.create_default_context()

print("Starting to send")
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
    server.login(sender, password)
    server.sendmail(sender, receive, message)

print("email sent.") 

我想在每封电子邮件中添加个性化代码(例如,123456),但是从我阅读的教程中我无法理解如何操作。

【问题讨论】:

  • 您的实际问题是什么?如何生成唯一代码?或者如何在邮件正文中包含这样的代码?

标签: python html email automation


【解决方案1】:

您需要确定从文件或数据库中检索联系人列表的方法。为简单起见,我将使用一个数组。

首先更新您的消息以支持自定义消息:

message = """
Subject: Message subject

Hi {name}, you have got a personal message!
"""

然后更新发送电子邮件背后的逻辑并将收件人添加到数组中(在现实生活中使用数据库或文件):

recipients = [{"email":"email1@aol.com", "name":"Misha"},{"email":"email2@aol.com", "name":"Andrey"}]

print("Starting to send")
with smtplib.SMTP_SSL("smtp.gmail.com", port, context=context) as server:
    server.login(sender, password)
    for recipient in recipients:
        server.sendmail(sender, recipient["email"], message.format(name=name))

【讨论】:

  • server.sendmail(sender, recipient["receive"], message.format(pCode=pCode)) 这是我更新的代码,但是当我运行它时,pCode 为 '123456',我得到这个错误。 UnicodeEncodeError: 'ascii' codec can't encode character '\xe8' in position 95: ordinal not in range(128)
猜你喜欢
  • 2019-10-18
  • 2012-06-30
  • 1970-01-01
  • 2010-10-27
  • 2020-07-12
  • 1970-01-01
相关资源
最近更新 更多