Как прикрепить файлы в электронном письме размером Flask? - PullRequest
1 голос
/ 09 мая 2020

Я работаю над api рассылки в Flask и новичок ie. У меня определен почтовый маршрут, который может получать изображения и некоторые данные формы, и с его помощью я отправляю электронное письмо с помощью smtplib. У меня проблема с добавлением вложений в мое сообщение. Может ли кто-нибудь подсказать мне, как добавлять изображения во вложения в это сообщение?

Распечатка print(request.files.getlist('images')) показывает мне [<FileStorage: 'IMG-20200509-WA0001.jpg' ('application/octet-stream')>] в терминале, что означает получение изображения.

Вот мой код:

def listMailer(request):

    name = request.form.get('name')
    phone = request.form.get('phone')
    wegmansUsername = request.form.get('wegmans_username')
    wegmansPassword = request.form.get('wegmans_password') 
    description =  request.form.get('description') 


    EMAIL_ADDRESS = xyz
    EMAIL_PASSWORD = xyz
    msg = EmailMessage()
    msg['Subject'] = 'Delivery Schedule'
    msg['From'] = EMAIL_ADDRESS
    msg['To'] = 'xyz@gmail.com'

    print(request.files.getlist('images'))

    msg.set_content('This is a plain text email')

    msg.add_alternative("""\

    <!DOCTYPE html>
    <html>
        <body>
            <p style="">Name: {}</p>
            <p style="">Phone: {}</p>
            <p style="">Wegmans Username: {}</p>
            <p style="">Wegmans Password: {}</p>
            <p style="">Description: {}</p>
        </body>
    </html>
    """.format(name,phone,wegmansUsername,wegmansPassword,description), subtype='html')


    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as smtp:
        smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
        smtp.send_message(msg)

Если это поможет, вот как я прикрепляю изображения и отправляю их для отправки маршрута с помощью библиотеки dio в моем мобильном приложении Flutter.

        for(var image in _images) {
                      _shoppingForm.files.add(MapEntry(
                          'images',
                          await MultipartFile.fromFile(image, filename: "${image.split("/").last}")
                      ));
                  }

1 Ответ

0 голосов
/ 09 мая 2020

Я использовал flask_mail библиотеку и добился этого. Сначала я сохранил изображения, затем прикрепил их к своей почте и, наконец, удалил их из своего каталога.

 for image in request.files.getlist('images'):
        image.save(image.filename)
        extension = image.filename.split('.')[-1]
        with app.open_resource(image.filename) as fp:
            msg.attach(image.filename,'image/' +extension, fp.read())
        os.remove(image.filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...