Python Sendgrid 将抄送添加到电子邮件

Ema*_*mac 2 python sendgrid

我正在使用 Python 的 SendGrid。我想通过电子邮件抄送一些人。似乎他们可能不再支持对电子邮件进行抄送,尽管我不确定这是真的吗?但肯定有办法解决它,但我很惊讶我找不到太多支持。

这是我的基本代码:

sg = sendgrid.SendGridAPIClient(apikey='*****')
from_email = Email(sender_address, sender_name)
to_email = Email(email_address)
subject = subject
content = Content("text/plain", email_message)
mail = Mail(from_email, subject, to_email, content)
response = sg.client.mail.send.post(request_body=mail.get())
Run Code Online (Sandbox Code Playgroud)

我该如何修改它以便它会在电子邮件中抄送某人?

Ema*_*mac 7

我解决了。圣地亚哥的回答大部分让我明白了,但这是我需要做的:

sg = sendgrid.SendGridAPIClient(apikey='****')
from_email = Email(sender_address, sender_name)
to_email = Email(to_email)
cc_email = Email(cc_email)
p = Personalization()
p.add_to(to_email)
p.add_cc(cc_email)
subject = subject
content = Content("text/plain", email_message)
mail = Mail(from_email, subject, to_email, content)
mail.add_personalization(p)
response = sg.client.mail.send.post(request_body=mail.get())
Run Code Online (Sandbox Code Playgroud)

如果您不包含 p.add_to(to_email) 它会拒绝它,因为个性化对象中没有“to email”。另外,如果您不在邮件对象中包含“to_email”,它会拒绝它,因为它正在寻找该参数,因此您必须有点多余并定义它两次。


hug*_*ugo 6

使用 SendGridPersonalization()Email()类对我不起作用。这就是我让它工作的方式:

from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail, Cc

# using a list of tuples for emails
# e.g. [('email1@example.com', 'email1@example.com'),('email2@example.com', 'email2@example.com')]
to_emails = []
for r in recipients:
  to_emails.append((r, r))

# note the Cc class
cc_emails = []
for c in cc:
  cc_emails.append(Cc(c, c))

message = Mail(
  from_email=from_email,
  to_emails=to_emails,
  subject='My Subject',
  html_content=f'<div>My HTML Email...</div>
)

if cc_emails:
  message.add_cc(cc_emails)

try:
  sg = SendGridAPIClient(os.getenv('SENDGRID_API_KEY'))            
  sg.send(message)  
except Exception as e:            
  print(f'{e}')

Run Code Online (Sandbox Code Playgroud)

希望这有助于某人。