Метод attach
Метод attach применяется к объекту сообщения
Message и добавляет вложение к письму.
Первым параметром передаётся имя файла или объект
файла, вторым - желаемое имя вложения, третьим -
MIME-тип содержимого. Если имя вложения не указано,
берётся имя исходного файла. Метод возвращает сам
объект сообщения, что позволяет строить цепочки вызовов.
Синтаксис
message.attach(filename, [content_type], [data])
Пример
Давайте создадим сообщение и прикрепим к нему файл
'image.png':
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USERNAME'] = 'user@example.com'
app.config['MAIL_PASSWORD'] = 'password'
mail = Mail(app)
with app.app_context():
msg = Message(
subject='Hello',
sender='user@example.com',
recipients=['recipient@example.com']
)
msg.attach('image.png', 'image/png', open('image.png', 'rb').read())
В результате к письму будет прикреплён файл
'image.png' с MIME-типом 'image/png'.
Пример
Давайте прикрепим текстовый файл, не указывая MIME-тип явно:
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USERNAME'] = 'user@example.com'
app.config['MAIL_PASSWORD'] = 'password'
mail = Mail(app)
with app.app_context():
msg = Message(
subject='Report',
sender='user@example.com',
recipients=['recipient@example.com']
)
with app.open_resource('report.txt') as fp:
msg.attach('report.txt', 'text/plain', fp.read())
Результат выполнения кода - письмо с вложением
'report.txt' и типом 'text/plain'.
Пример
Давайте прикрепим несколько файлов, используя цепочку вызовов:
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.example.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USERNAME'] = 'user@example.com'
app.config['MAIL_PASSWORD'] = 'password'
mail = Mail(app)
with app.app_context():
msg = Message(
subject='Files',
sender='user@example.com',
recipients=['recipient@example.com']
)
msg.attach('a.txt', 'text/plain', b'aaa')
msg.attach('b.txt', 'text/plain', b'bbb')
msg.attach('c.txt', 'text/plain', b'ccc')
В результате к письму будут прикреплены три файла:
'a.txt', 'b.txt' и 'c.txt'.
Смотрите также
-
класс
Message,
который представляет электронное письмо -
метод
add_recipient,
который добавляет получателя письма -
атрибут
attachments,
который хранит список вложений -
атрибут
body,
который содержит текстовое тело письма