.sendmail function trying to convert to ASCII, do I have to convert?

前端 未结 1 1424
野性不改
野性不改 2021-01-23 20:14

So I\'m trying to send an email using python but I can\'t as long as it converts it to ASCII, is there a way around this or do I need to find another function?



        
相关标签:
1条回答
  • 2021-01-23 20:39

    Traditionally, SMTP requires the message you submit to be in ASCII. The problem is earlier in the process: The message you are trying to pass in should already have been converted into a proper MIME message when you created it.

    Generally, any binary data should be converted to have a Content-Transfer-Encoding: base64 and any non-ASCII text should have Content-Transfer-Encoding: quoted-printable. Then you can safely use non-ASCII bytes and the transfer encoding takes care of transparently converting the payload to ASCII for transport, and the recipient's email software takes care of displaying it as you intended.

    Python's email library already knows how to take care of these things. Perhaps you are trying to construct a message manually without actually checking what the specs say? But using the standard library is obviously easier and saves you from a fair bit of learning curve.

    For concrete details, see e.g. how to send a email body part through MIMEMultipart

    There are now provisions for extending SMTP to handle UTF-8 everywhere, but the error message suggests that your Sendmail is not yet up to the task. (Or perhaps there is an option you can add to its configuration, but that's far outside the scope of this question, and of Stack Overflow.)

    0 讨论(0)
提交回复
热议问题