【问题标题】:Ascii codec can't encode character when sending email [duplicate]发送电子邮件时,Ascii编解码器无法编码字符[重复]
【发布时间】:2019-11-26 17:37:14
【问题描述】:

我正在使用 python 发送电子邮件,但发送时收到此错误消息:

代码:

if Quantidade <= Minimo:
   remetente    = 'xxxxxxxxxxxxxxxxxx'
   senha        = 'xxxxxxxxx'

   destinatario = ['xxxxxxxxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxx']
   assunto      = 'Stock Papelaria'
   texto        = 'O seguinte produto: {} encontra-se com a quantidade ({}) de stock igual ou inferior ao stock minimos.'.format(
        Produto, Quantidade)

   msg = '\r\n'.join([
      'From: %s' % remetente,
      'To: %s' % destinatario,
      'Subject: %s' % assunto,
      '',
      '%s' % texto
   ])

   server = smtplib.SMTP('smtp.gmail.com:587')
   server.starttls()
   server.login(remetente,senha)
   server.sendmail(remetente, destinatario, msg)
   server.quit()

我得到的错误出现在文本行中,其中有产品和数量变量。 我该如何解决这个问题?

【问题讨论】:

  • Produto 是否恰好是一个字符串变量?
  • @Siddharth Srinivasan 是的,问题出在 Product 变量中,因为它有 ã 之类的词,例如
  • 你能试试Product.encode("utf-8")看看有没有效果?
  • @Siddharth Srinivasan 毕竟解决了。谢谢
  • utf-8 编码成功了吗?

标签: python


【解决方案1】:

这个错误一般是因为正在处理的字符串值不一致,主要是str类型的变量和unicode类型的变量混合。基于Unicode HOWTO,我们必须将其正确编码为utf-8。所以Produto 变成了Produto.encode("utf-8")

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2015-10-21
    • 2010-12-11
    • 2012-07-02
    • 2010-12-11
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多