[Django] Python の send_mail() で Gmail の SMTP サーバーを利用する場合、 email_from が変更できない
2017/05/14 23:10
  • Python の send_mail() で Gmail の SMTP サーバーを利用する場合、 email_from
    が変更できないということがわかりました。

    Djangoによるフォームの実装は以下のブログ記事で以前紹介しました。

    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)
    

    settings.py
    # Gメールで送信する例
    EMAIL_HOST = 'smtp.gmail.com'
    EMAIL_PORT = 587
    EMAIL_HOST_USER = 'hogehoge@gmail.com'
    EMAIL_HOST_PASSWORD = '2段階認証プロセス設定後に発行したアプリパスワード'
    EMAIL_USE_TLS = True
    

    この場合、メールの送信者が no-reply@4to.pics に設定できているように見えますが、hogehoge@gmail.comEMAIL_HOST_USER になってしまっています。

    色々調べましたが、どうやら 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

    人気ブログランキングへ ブログランキング・にほんブログ村へ
    ↑応援よろしくお願いします!m(_ _)m

  • <2017/05/14 22:49>
  • Python
  • GmailDjangoPythonSMTPメールフォーム送信者mail_from
  • 新しい記事へ
    Google Search Console に自分のサイトを登録する方法

    古い記事へ
    [Django] Google Search Console などでサイトのドキュメントルートにHTMLファイルを設置する方法

profile picture

自己紹介的な何か

@wkmettyでついったーやってます。時々。 6年間勤めたゲーム会社を2018年2月に退職しフリーランスのプログラマに。 WordPress Core, WP-CLI コントリビューター。 お仕事募集中です。