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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

368閲覧

メールを受信できない

hjpehrbh

総合スコア2

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2023/01/13 02:40

前提

「動かして学ぶ!Python Django開発入門 第2版」
に沿ってプログラムを書いています.

AWS EC2にインスタンスを作っています.

Route 53でドメインを登録しました.

Amazon SESの検証済みIDにドメインとEメールアドレスがあります.
アカウントはAmazon SESサンドボックスから移動されました.

実現したいこと

Amazon SESを利用して,メールがドメインのURLのフォームに記入したメールアドレスに送信されるようにする.

ソースコード33行目から,送り先も送り元メールアドレスになっていると思います.
ドメインのURLからメールを送信するとAmazon SESにメールが送られるのでしょうか.
Amazon SESでEメール受信の設定をすれば受け取れるのでしょうか.

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Python

1class InquiryForm(forms.Form): 2 name = forms.CharField(label='お名前', max_length=30) 3 email = forms.EmailField(label='メールアドレス') 4 title = forms.CharField(label='タイトル', max_length=30) 5 message = forms.CharField(label='メッセージ', widget=forms.Textarea) 6 7 def __init__(self, *args, **kwargs): 8 super().__init__(*args, **kwargs) 9 10 self.fields['name'].widget.attrs['class'] = 'form-control' 11 self.fields['name'].widget.attrs['placeholder'] = 'お名前をここに入力してください.' 12 13 self.fields['email'].widget.attrs['class'] = 'form-control' 14 self.fields['email'].widget.attrs['placeholder'] = 'メールアドレスをここに入力してください.' 15 16 self.fields['title'].widget.attrs['class'] = 'form-control' 17 self.fields['title'].widget.attrs['placeholder'] = 'タイトルをここに入力してください.' 18 19 self.fields['message'].widget.attrs['class'] = 'form-control' 20 self.fields['message'].widget.attrs['placeholder'] = 'メッセージをここに入力してください.' 21 22 # 51% リスト9.2 23 def send_email(self): 24 name = self.cleaned_data['name'] 25 email = self.cleaned_data['email'] 26 title = self.cleaned_data['title'] 27 message = self.cleaned_data['message'] 28 29 subject = 'お問い合わせ {}'.format(title) 30 message = '送信者名: {0}\nメールアドレス: {1}\nメッセージ:\n{2}'.format(name, email, message) 31 from_email = os.environ.get('FROM_EMAIL') 32 to_list = [ 33 os.environ.get('FROM_EMAIL') 34 ] 35 cc_list = [ 36 email 37 ] 38 39 message = EmailMessage(subject=subject, body=message, from_email=from_email, to=to_list, cc=cc_list) 40 message.send()

試したこと

本のソースコードと自分のソースコードの照らし合わせ

補足情報(FW/ツールのバージョンなど)

ソースコード全体のリンク
https://github.com/j4pngthr/private_diary

macOS: Ventura 13.1

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

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

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

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

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

hjpehrbh

2023/01/13 02:42

環境変数FROM_EMAILにはAWS SESの検証済みIDに登録したメールアドレスを設定しています.
yu_1985

2023/01/13 06:21

SESのコンソールでもCloudWatchでもいいので、SESの送信数のメトリクスを確認してみてください。 そこが増えてないならそもそもメールが送れていません。 送信のメトリクスが増えているのに受信できていないなら迷惑メールとみなされている可能性があります。 そちらもコンソールから確認できます。 あと、SESを送信するためにアプリ側でなんの設定をしたのかこれではわかりません。 これは恐らくSMTPを使用して普通にメールを送信しようとしているんだと思いますが、SESをSMTP経由で使う設定はしましたか? SMTPを使って送信する方法をファーストチョイスにするのは微妙なので、SDKを使って送信するようにしたほうがよいとは思いますが…。 ついでに、関数の中にmessageという名前の別の使い方をしている変数が存在します。 混乱の元なので別の名前にすることを推奨します。
hjpehrbh

2023/01/13 06:47

SESの検証済みIDからテストEメールを送信したときしかメトリクスは増えていないです.
hjpehrbh

2023/01/13 06:49

本に沿ってよくわからず進めました. SESを送信するためにアプリ側でなんの設定をしたのか調べます. ソースコード自体は補足のgitにあげています.
yu_1985

2023/01/13 06:52

ということは「受信できない」ではなく「送信できない」ですね。 本に何が書いてあるかは知りませんが、よく読んでやってみてください。
guest

回答1

0

自己解決

送信できないことが判明しました.

投稿2023/01/19 03:05

hjpehrbh

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問