質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

910閲覧

AWS SES Python 添付メールの送る Lamdaプログラムについて

watchdogs

総合スコア54

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/02/16 08:23

編集2023/02/16 08:38

実現したいこと

AMAZON AWS SESを使用して 添付メールを送りたいです
メールを送るところまで記載しましたが、
添付する方法がわかりません。
下記のプログラムに対してどのように追記すればよいか教えて下さい。

言語はPythonになります。

調べてみると
SendRawEmail API というものを活用する必要があると記載されています。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/send-email-raw.html
しかし下記のような内容に
添付させるコードを加えるにはどのように書けば良いかわからず混乱しています。
参考までにnode.jsではいくつか参考文献は見つかるのですが、
https://qiita.com/Kazunori-Kimura/items/fc14d69dff5a9d339b53
Python に関しては見つけ切りませんでした。
お手数おかけしますが、アドバイスを頂けますと助かります。

Python

1import io 2import pandas as pd 3import boto3 4from email.header import Header 5 6def lambda_handler(event, context): 7 8 #添付したいデーターーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 9 #df_x = pd.DataFrame() 10 # 保存領域を準備 11 buf = io.BytesIO() 12 # メモリに保存 13 df_x.to_csv(buf,encoding="cp932")#こちらのデータを.CSVとしてメールに添付したい。 14 #ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 15 16 SENDER_ADDRESS = 'test' 17 SENDER_NAME = 'test' 18 ses = boto3.client('ses', region_name='eu-west-1') 19 20 to_address = 'test' 21 subject = 'テストメール' 22 body = 'テストメールです。' 23 24 send(to_address, subject, body) 25 display_name = '{0}<{1}>'.format( 26 Header(SENDER_NAME, 'utf-8').encode(), 27 SENDER_ADDRESS 28 ) 29 30 ses.send_email( 31 Source=display_name, 32 Destination={ 33 'ToAddresses': [to_address] 34 }, 35 Message={ 36 'Subject': { 37 'Data': subject 38 }, 39 'Body': { 40 'Text': { 41 'Data': body 42 } 43 } 44 } 45 )

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

参考情報程度の回答です。
以下で示されているコードで、任意のバイナリ含めて添付できるようです。
How to Send an Email with Attachments using Amazon SES in Python Example

投稿2023/02/16 09:03

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

watchdogs

2023/02/16 09:22

can110さん コメントありがとうございました。 実装を行ってみます。
watchdogs

2023/02/16 09:36

添付の定義のところが難しいですね うまく読み込みが出来ずエラーになりますね。 # Full path to the file that will be attached to the email. ATTACHMENT1 = buf att1 = MIMEApplication(open(ATTACHMENT1, 'rb').read()) att1.add_header('Content-Disposition', 'attachment', filename=os.path.basename(ATTACHMENT1)) #エラー内容 [ERROR] TypeError: expected str, bytes or os.PathLike object, not BytesIO Traceback (most recent call last):   File "/var/task/lambda_function.py", line 236, in lambda_handler     att1 = MIMEApplication(open(ATTACHMENT1, 'rb').read())END RequestId: 62631168-26be-4cb6-a918-6a831cf3eac9
can110

2023/02/17 04:52

おそらくATTACHMENT1 がBytesIOなのでしょう。であれば att1 = MIMEApplication(ATTACHMENT1.read()) でよいようにおもいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問