Python boto3 SNS форматирование электронной почты - PullRequest
0 голосов
/ 08 ноября 2018

Я написал код, в котором я использую aws sns для отправки уведомлений по электронной почте заинтересованным сторонам через библиотеку boto3.

Моя проблема в том, что когда я писал код, я использовал 4 пробела (или табуляции).между текстами, чтобы сделать его более читабельным, но при просмотре его в виде электронного письма (gmail) он отображается полностью неформатированным.

Мне нужен способ правильного форматирования сообщений электронной почты

Мой код:

import boto3
def publish_to_sns(sub, msg):
    topic_arn = "<my sns arn>"
    sns = boto3.client("sns")
    response = sns.publish(
        TopicArn=topic_arn,
        Message=msg,
        Subject=sub
    )

def final_status(f_name, row_count, staged_row_count, status):
    sub = "Complete [{status}]: Process is complete".format(status=status)
    msg = """
        Process completed.

        ------------------------------------------------------------------------------------
        Summary of the process:
        ------------------------------------------------------------------------------------
        File Name    :   {file_name}
        Status       :   {status}
        Error        :   N/A
        Rows Read    :   {r_read}
        Rows Staged  :   {r_staged}
        ------------------------------------------------------------------------------------
        """.format(file_name=f_name, r_read=row_count, r_staged=staged_row_count, status=status)
    publish_to_sns(sub, msg)

Что я вижу (двоеточия не выровнены):

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Я могу добиться вполне читаемого форматирования с помощью простого хака. Я скопировал всю строку из своей среды IDE и вставил ее в окно составления сообщения Gmail (мы используем Gmail).

Неформатированный текст в Gmail Unformatted text in Gmail

Затем я отформатировал текст, чтобы он выглядел читабельным:

Форматированный текст в Gmail Formatted text in Gmail

Затем я вставил всю строку обратно в мою IDE.

Форматированный текст в IDE Formatted text in IDE

И это сработало !!!

Уведомления кажутся заинтересованным сторонам более читабельными, и, учитывая ограничение SNS на отправку расширенных текстовых сообщений, этот подход кажется довольно простым.

0 голосов
/ 08 ноября 2018

Это должно помочь вам исправить пробелы:

def final_status(f_name, row_count, staged_row_count, status):
sub = "Complete [{status}]: Process is complete".format(status=status)
msg = """
    Process completed.

    ------------------------------------------------------------------------------------
    Summary of the process:
    ------------------------------------------------------------------------------------
    {a:<20}    :   {file_name}
    {b:<20}    :   {status}
    {c:<20}    :   N/A
    {d:<20}    :   {r_read}
    {e:<20}    :   {r_staged}
    ------------------------------------------------------------------------------------
    """.format(a='File Name', b = 'Status', c = 'Error', d = 'Rows Read', e = 'Rows Staged', file_name=f_name, r_read=row_count, r_staged=staged_row_count, status=status)
print(sub)
print(msg)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...