Python の send_mail() で Gmail の SMTP サーバーを利用する場合、 email_from
が変更できないということがわかりました。
Djangoによるフォームの実装は以下のブログ記事で以前紹介しました。
forms.py
from django import forms
from django.core.mail import send_mail
from django.conf import settings
class ContactForm(forms.Form):
name = forms.CharField() # 名前
message = forms.CharField(widget=forms.Textarea) #問い合わせ内容
# メール送信処理
def send_email(self):
# send email using the self.cleaned_data dictionary
subject = self.cleaned_data['name']
message = self.cleaned_data['message']
from_email = 'no-reply@4to.pics'
to = [settings.EMAIL_HOST_USER]
send_mail(subject, message, from_email, to)
# Gメールで送信する例
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'hogehoge@gmail.com'
EMAIL_HOST_PASSWORD = '2段階認証プロセス設定後に発行したアプリパスワード'
EMAIL_USE_TLS = True
色々調べましたが、どうやら Gmail の SMTP サーバを使っている場合は from_email が設定できないようで、常に EMAIL_HOST_USER になってしまうようです。
参考:
・'from_email' not showing with 'send_mail' smtp
・[Django-users] send_mail reply to (how to?)
send_mail() の代わりに EmailMessage を使った上で、header に {'Reply-To': contact_email } を指定すればいいようです。
headers = {'Reply-To': contact_email }
公式ドキュメント:
https://docs.djangoproject.com/en/1.11/topics/email/#the-emailmessage-class
新しい記事へ
Google Search Console に自分のサイトを登録する方法
古い記事へ
[Django] Google Search Console などでサイトのドキュメントルートにHTMLファイルを設置する方法
mac に pip をインストールする
mac は標準で python が入っていますが、パッケージ管理の pip がインストールされていないので入れてみました。
2017/05/26 09:00
[GAS] Google Drive の特定フォルダ配下のフォルダ・ファイルの権限を一括で移譲する
Google Drive の特定フォルダ配下のファイル・フォルダの権限を一括で移譲するツールを Google Apps Script で作りました。
2018/11/10 15:54
[Windows] Ophcrack を使ってユーザーパスワードを解析する方法
家族で使っていた Windows7 のログインパスワードを忘れたため、Ophcrack を使って解析したときの記録です。
2017/09/30 21:00
[shell] フォルダ内にある大量の ZIP ファイルをまとめて解凍する
とある ZIP を解凍すると中に大量の ZIP が居たときに幸せになれるコマンドを紹介します
2018/06/19 23:45
[MySQL] データファイルから DB を復元する
先日 MySQL が再起動できなくなる問題が発生し、急遽データファイル(.frm, .ibd)から復元しました
2018/11/25 12:44