Flask-Mail altère les paramètres globaux lors de l'envoi de courrier avec utf-8 sans autorisation, donc après son importation, cela fonctionnera si vous le restaurez. Plus précisément, écrivez ceci quelque part avant de l'envoyer.
test.py
from email import charset
charset.add_charset('utf-8', charset.SHORTEST, charset.BASE64, 'utf-8')
Ou, s'il est limité au Japon, si vous spécifiez explicitement charset dans shift_jis, vous pouvez l'envoyer sans aucun problème sans faire ce qui précède.
test.py
msg = Message(sender=(u"expéditeur", "[email protected]"),
subject = u"Titre",
recipients = ["[email protected]"],
reply_to = u"Répondre<[email protected]>",
charset = 'shift_jis') #← C'est
msg.body = u"C'est une fiole d'examen_sjis"
mail.send(msg)
c'est tout. Ce qui suit est une capture.
Flask a une extension très utile appelée Flask-Mail. C'est assez simple avec smtplib et e-mail, mais il est exceptionnellement facile d'envoyer des e-mails que vous utilisez souvent pour créer des services Web.
Je me demande si vous pouvez comprendre en regardant cela.
http://pythonhosted.org/flask-mail/
En particulier, comme exigence récente, j'envoie souvent des newsletters électroniques en plusieurs parties / alternatives (celles qui prennent en charge à la fois le courrier HTML et le courrier texte), ce qui est également inhabituellement facile à envoyer.
test.py
from flask import Flask
from flaskext.mail import Mail, Message
app = Flask(__name__)
mail = Mail(app)
msg = Message(subject, sender=sender, recipients=reciepients)
msg.body='Hourra'
msg.html='<h1>Hourra</h1>'
mail.send(msg)
Dangereux.
En fait, en Python2, cela fonctionne de bonne humeur en raison d'un arrêt cérébral, mais quand il est exécuté en Python3, cela devient généralement comme ça. Je ne comprends pas ce que cela signifie et je perds complètement ma motivation.
Flask semble être bon, alors je vais le toucher! -> J'aime! Mettez-le en affaires! -> Envoyer un mail? Flask-Mail semble être pratique! -> Gee! !! !! !! !! Encrassé! !! !! Je me demande s'il y a des gens comme ça. C'est moi. salut! !! !!
Cliquez ici pour le code expérimental
flask_urf8.py
# -*- coding: utf-8 -*-
from flask import Flask
from flask_mail import Message, Mail
app = Flask(__name__)
with app.app_context():
mail = Mail(app)
msg = Message(sender=(u"expéditeur", "[email protected]"),
subject=u"Titre",
recipients=["[email protected]"],
reply_to=u"Répondre<[email protected]>")
msg.body = u"Un flacon_utf8"
mail.send(msg)
résultat
Traceback (most recent call last):
File "flask_utf8.py", line 14, in <module>
mail.send(msg)
File "/Users/yasunori/venvs/sai/lib/python3.3/site-packages/flask_mail.py", line 416, in send
message.send(connection)
File "/Users/yasunori/venvs/sai/lib/python3.3/site-packages/flask_mail.py", line 351, in send
connection.send(self)
File "/Users/yasunori/venvs/sai/lib/python3.3/site-packages/flask_mail.py", line 168, in send
message.as_string())
File "/usr/local/Cellar/python3/3.3.3/Frameworks/Python.framework/Versions/3.3/lib/python3.3/smtplib.py", line 746, in sendmail
msg = _fix_eols(msg).encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character '\u3042' in position 364: ordinal not in range(128)
Donc, je lisais le code Flask-Mail, mais je me demandais ce que c'était.
flask_mail.py
charset.add_charset('utf-8', charset.SHORTEST, None, 'utf-8')
Il y a cette description. Le paramètre de code de caractère global (!) Utilisé pour le courrier est écrasé (!) Sans autorisation.
Donc, comme je l'ai vérifié auparavant, Python3 ne fonctionne pas avec ce paramètre jusqu'à présent. http://qiita.com/yasunori/items/265d8db746742bb967c4#2-10
Donc, après avoir importé Flask-Mail, je l'ai écrasé et restauré.
Baka! !! !!.py
from email import charset
charset.add_charset('utf-8', charset.SHORTEST, charset.BASE64, 'utf-8')
Après avoir lu le numéro Flask-Mail, "Si vous utilisez BASE64 pour BODY, il est facile de se faire prendre dans le filtre anti-spam, donc je pense qu'il vaut mieux le régler sur Aucun. C'est ce que fait Django aussi." "Sérieusement!? Merci!" C'était en.
Au fait, Django en question a été modifié pour qu'il ne soit pas écrasé maintenant car "je me demandais pourquoi j'ai écrasé le global". Il semble que Flask-Mail ait capturé une lacune momentanée.
Veuillez me faire savoir s'il existe une solution plus fondamentale.
C'est tout.
Recommended Posts