AWS 초절 초보자가 SES를 사용하여 메일을 일괄 전송해 보았습니다.

필자의 레벨감은
  • AWS 블록 다이어그램을 읽을 수있는 각 기능의 개요는 무엇입니까?
  • AWS에서의 구현 경험은 제로(시스템 개발 경험도 제로)

  • 그래서 생 따뜻하게 지켜주세요.

    하고 싶은 일



    나열된 이메일 주소로 해당 주소를 문장에 담은 이메일을 보내고 싶습니다.

    기본적으로는 아래의 기사를 참고로 구현. 항목도 인용 받고 있습니다.

    SES에서 소스 이메일 주소 등록



    여기 잘 됐다. 방법은 그물에 넘쳐서 할애

    DynamoDB로 사용자 테이블 만들기



    ? ? ?
    userId(PK)이란? ? ? 기본 키라는 것을 알았지만,
    a06b7c45-1303-45bf-a2d7-fec53fbc224c라든지가 무엇을 나타내고 있는지 모르기 때문에,
    일단 다음과 같이 설명


    userId(PK)
    이름
    emailAddress


    1
    타로
    st1 @ x. 이 m

    2
    하나코
    st2 @ x. 이 m



    메일 배달 람다 함수 구현



    Lambda 함수를 구현할 때 DynamoDB 및 SES 권한이 필요합니다.

    설명이 있었기 때문에 IAM에서 다음 권한을 가진 역할을 만듭니다.
  • AmazonDynamoDBFullAccess
  • AmazonSESFullAccess
  • AWSLambda_FullAccess

  • index.js의 샘플 코드를 보아도, 아칸,,,, JavaScript 전혀 모르는,,,,
    파이썬으로 쓰자. . .
  • DynamoDB에서 데이터 검색
  • for 문으로 돌려 SES로 메일 보내기
    을 실현할 수 있으면, 일단 움직일 것이다.

  • 자신의 쓰는 법이 별로 좋지 않은 것은 알 수 있다.

    dynamoses.py
    import boto3
    import json
    
    REGION = "ap-northeast-1"
    #送信元
    SRC_MAIL = "[email protected]" 
    #送信先
    #DST_MAIL = "[email protected]"
    MESSAGE = "様へ これはテストです!"
    #タイトル
    EMAIL = "テスト配信"
    
    def send_email(source, to, subject, body):
        client = boto3.client('ses', region_name=REGION)
    
        response = client.send_email(
            Source=source,
            Destination={
                'ToAddresses': [
                    to,
                ]
            },
            Message={
                'Subject': {
                    'Data': subject,
                },
                'Body': {
                    'Text': {
                        'Data': body,
                    },
                }
            }
        )
    
        return response
    
    
    
    def lambda_handler(event, context):
    
        dynamodb = boto3.resource('dynamodb')
        table = dynamodb.Table('User')
    
        #シンプルにscanメソッドの呼び出しをする
        response = table.scan()
        #取得レコードは"item"ではなく"items"!
        items = response['Items']
    
        #メールアドレス取得
        newadd = list()
        newname = list()
        for ke in items:
            for k in ke.keys():
                if k =='emailAddress': 
                    newadd.append(ke[k])
                elif k =='name': 
                    newname.append(ke[k])
    
        email = EMAIL
        #message = json.dumps(event, indent = 4,ensure_ascii=False)
        message = MESSAGE
        for DST_MAIL,atesaki in zip(newadd,newname):
            message = atesaki + MESSAGE
            r = send_email(SRC_MAIL, DST_MAIL, email, message)
            print(DST_MAIL)
        return r
    
    

    참고



    결과



    무사히, 「XX님」이 메아드에 대응하는 이름이 된 문면의 메일을 보낼 수 있었습니다


    걸린 시간



    7시간 강한 정도

    하고 싶은 곳


  • 메일 문장 직접 쓰기가 아니라 읽고 싶다
  • 더 쉽게 데이터를 검색 할 수 있기 때문에 지금 시도하십시오


  • 추가: 메일 문면을 txt 파일 로드로 변경. 변수로 이름이나 주소라든지 날짜라든지 넣을 수 있도록 했다.
    오송이 무섭기 때문에, 읽어들인 요소를 넣은 list의 length를 비교해, 다르면 강제 종료하도록(듯이) 했다.
        if len(newname) == len(newadd) and len(newname) == len(newdate) and len(newname) == len(newtime) :
            print("要素数が合っています")
            print(newname,newadd,newdate,newtime)
    
        else :
            print("要素数が合いません、確認してください")
            sys.exit(1)
    
    

    결국 공식 사이트가 제일 참고가 되는 이야기. BCC의 설정이 쓰여 있는 블로그가 보이지 않았지만, 보통으로 쓰여 있었다.
     Destination={
            'ToAddresses': [
                'string',
            ],
            'CcAddresses': [
                'string',
            ],
            'BccAddresses': [
                'string',
            ]
        },
    
    

    좋은 웹페이지 즐겨찾기