Envoyer un e-mail avec SES en Python et un message court avec SMS sur SNS

introduction

Avez-vous des fonctionnalités dans votre application qui envoient des e-mails ou des messages courts? J'ai également implémenté une telle fonctionnalité l'autre jour. Bien sûr, en utilisant AWS SES et SNS. Je voulais l'écrire dans Node.js, mais je l'ai écrit en Python pour diverses raisons. SES, SNS, SMS sont compliqués! Je l'ai implémenté en le faisant, mais il y avait des restrictions et ainsi de suite, alors je l'ai laissé dans l'article pour le futur ...

Qu'est-ce que SES?

SES (Simple Email Service) est une plate-forme de messagerie qui permet aux utilisateurs d'envoyer et de recevoir des e-mails de manière économique et simple en utilisant leurs adresses e-mail et domaines. Un service qui vous permet d'envoyer et de recevoir des e-mails avec les services AWS pour le moment. Je suis désolé d'être approprié ...

Qu'est-ce que SNS?

SNS (Simple Notification Service) est un service Web qui coordonne et gère la livraison ou l'envoi de messages aux terminaux abonnés. Vous pouvez utiliser Lambda, SQS, SMS, etc. en tant qu'abonné. Cette fois, j'enverrai un court message par SMS.

Méthode de mise en œuvre

Comme il y avait plusieurs appelants tels que le côté application et d'autres services d'AWS, j'ai décidé de l'écrire dans Lambda. C'est essentiellement comme lancer Lambda et envoyer des SES ou des SMS.

SES Si vous transmettez l'adresse e-mail de destination dans un tableau, vous pouvez l'envoyer à plusieurs adresses. Fondamentalement, lorsque vous utilisez SES, vous ne pouvez envoyer et recevoir que les adresses enregistrées et autorisées par SES à l'avance. Cependant, si vous le faites, vous devrez vous inscrire et autoriser SES chaque fois que le nombre d'adresses augmente, alors contactez le support et demandez-leur de quitter l'environnement sandbox. Ensuite, vous n'avez pas à vous inscrire en tant que destinataire de courrier électronique. (Notez que l'adresse de l'expéditeur doit être enregistrée)

import boto3

def lambda_handler(event, context):
  try:
    ses = boto3.client("ses", region_name = "us-west-2")
    ses.send_email(
      Source = "from_mailaddress",
      Destination = {
        "ToAddresses": "to_mailaddress"
      },
      Message = {
        "Subject": {
          "Data": "subject_title",
          "Charset": "UTF-8"
        },
        "Body": {
          "Text": {
            "Data": "body_message",
            "Charset": "UTF-8"
          }
        }
      }
    )
  except Exception as e:
    print e

SNS(SMS) Il semble que le numéro de téléphone de destination ne puisse être envoyé qu'à un numéro de téléphone international (parfois avec +81). C'est aussi un message court, donc si vous ne gardez pas le contenu du message modéré, vous obtiendrez une erreur. De plus, la limite de frais d'utilisation par défaut est de 1 $ / mois et vous ne pouvez envoyer que des dizaines de messages tels quels. De plus, vous ne pouvez pas augmenter la limite (vous recevrez un message d'erreur indiquant que vous n'êtes pas autorisé à l'augmenter), veuillez donc contacter le support ainsi que SES afin que vous puissiez augmenter la limite.

import boto3

def lambda_handler(event, context):
  try:
    sns = boto3.client("sns")
    phoneNumber = "+818012345678"
    message = "send message"
    sns.publish(
      PhoneNumber = phoneNumber
      Message = message
    )
  except Exception as e:
    print e

à la fin

J'étais un peu coincé avec les restrictions de SES et SNS (SMS), j'ai donc écrit cet article. Si vous utilisez AWS-SDK, etc., vous pouvez facilement envoyer un message du côté de l'application. C'est pratique. Si vous donnez à l'événement Lambda l'adresse de destination, le numéro de téléphone, le contenu du message, etc. et que vous y faites référence, vous pouvez le réutiliser dans un seul Lambda. C'est pratique (deuxième fois).

à plus!

Recommended Posts

Envoyer un e-mail avec SES en Python et un message court avec SMS sur SNS
Envoyer un e-mail avec Amazon SES + Python
Envoyer des e-mails par Python
Envoyer un e-mail avec Excel en pièce jointe en Python
E-mail hipchat avec postfix, fluentd et python sur Azure
Envoyer du courrier japonais avec Python3
Envoyer des e-mails avec Python (Outlook)
[Automation] Envoyer des e-mails Outlook avec Python
[Python] Envoyez des e-mails avec Outlook
Envoyer des e-mails via gmail avec Python 3.4.3.
mail html avec image à envoyer avec python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Un mémo contenant Python2.7 et Python3 dans CentOS
Gérer les "années et mois" en Python
Créez et modifiez des feuilles de calcul dans n'importe quel dossier sur Google Drive avec python
Application de notification de message Rabbit MQ avec Growl en Python ~ avec Raspeye et Julius ~
Envoyer et recevoir des données binaires via une communication série avec python3 (sur Mac)
Envoyer un message à LINE avec Python (LINE Notify)
Envoyez un email à l'adresse de Spushi avec python
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Envoyer un message à Skype et Chatwork en Python
[Python] Envoyer un e-mail
Essayez de travailler avec Mongo en Python sur Mac
Extraire les pièces jointes reçues par Thunderbird avec Python
Envoyer HTTP avec l'en-tête d'authentification de base en Python
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Si vous rencontrez des difficultés pour envoyer du courrier avec python smtplib, ligne de commande
Installez le sélénium sur votre Mac et essayez-le avec python
Suivi automatique sur Twitter avec python et sélénium! (RPA)
Obtenez des commentaires sur youtube Live avec [python] et [pytchat]!
Calculer la différence entre Pose et Transform avec ROS en Python
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Démarrer le calcul numérique avec Python (avec Homebrew et pip)
Automatisez Chrome avec Python et Selenium sur votre Chromebook
Message d'exception en Python
Envoyer des e-mails avec Django
Valider l'e-mail avec Python
Envoyer Gmail en Python
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Veriloggen et cocotb sont utilisés pour concevoir et tester Verilog en Python uniquement.
Comment installer NPI + envoyer un message à la ligne avec python
[Python] Envoyez un e-mail depuis Gmail avec le paramètre d'authentification en deux étapes
J'ai essayé d'envoyer un e-mail d'Amazon SES avec Python
Usurpation d'adresse IP à l'aide de tor sur macOS et vérification avec python
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Conseils pour coder courts et faciles à lire en Python
Sélectionnez le fichier dans la boîte de dialogue avec python → Afficher le nom du fichier dans la boîte de message
Jouez avec les archives de Mastodon dans les réponses et les favoris de Python 2 Count
Remarques sur le déploiement de pyenv avec Homebrew et la gestion des versions de Python
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
Obtenir le message du premier offset avec le consommateur kafka en python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Notes sur la lecture et l'écriture d'images TIFF float32 avec python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Grattage au sélénium en Python
Python et matériel - Utilisation de RS232C avec Python -
Python sur Ruby et Ruby en colère sur Python
Exploitez LibreOffice avec Python