SES вложение электронной почты в python - PullRequest
0 голосов
/ 16 апреля 2020

Используя Python 3.7, с текстовым файлом: 'sample.txt', развернутым в лямбда-пакете и записывающим логи программы python в этот текстовый файл. Сейчас я пытаюсь прикрепить этот текстовый файл и отправить электронное письмо через aws -SES, используя mime libs. Примечание: выполнение всей этой программы в лямбда-функции. Вот мой код в лямбда-функции:

import json, boto3
import logging as logger
import pathlib
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os

def lambda_handler(event, context):

    #path = pathlib.Path().absolute()
    filename = ‘/tmp/sample.txt'
    logger.basicConfig(filename=filename, format='%(message)s',
                    level=logger.DEBUG, filemode='wt')
    #write these logs to text file
    logger.info(filename)
    logger.warning('233')
    logger.error('....')

    from = "abc@sample.com"
    to = "xyz@sample.com"
    region = "sample region"
    subject = "sample email"

    body = """<html>
    <head></head>
    <body>
      <h1>Test</h1>
      <p>This email was sent for testing</p>
    </body>
    </html>
               """            
    ses = boto3.client('ses',region_name=region)

    msg = MIMEMultipart()
    msg["Subject"] = subject
    msg["From"] = from
    msg["To"] = to

    body_txt = MIMEText(body, "html")
    msg.attach(body_txt)
    fo= open(filename, 'rb')
    file_content =fo.read()
    attachment = MIMEApplication(file_content)
    fo.close()
    attachment.add_header("Content-Disposition", "attachment", filename=filename)
    msg.attach(attachment)

    response = ses.send_raw_email(Source = from, Destinations = [to], RawMessage = {"Data": msg.as_string()})

"errorMessage": "[Errno 2] Нет такого файла или каталога: '/var/task/sample.txt'",

  1. Это потому, что / var / task будет удален после выполнения функции?
  2. сохранение текстового файла в S3, единственный вариант?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...