実現したいこと
送信元メールアドレスを任意で設定できるようにしたい。
前提
Djangoのsend_mailでメールお問合せフォームを作っています。
もうほとんどプログラムはできており実行テストをしたら、送信元Fromが宛先と同じメールアドレスになってしまいます。
送信元メールアドレスを任意で設定できるようにしたいのですがどうすればよろしいでしょうか?
settings.pyのEMAIL_HOST_USERで設定したメールアドレスが送信元で固定されているんだと思います。
###ソースコード
forms.py
1from django import forms 2 3class ContactForm(forms.Form): 4 subject = forms.CharField(label='件名', max_length=100) 5 sender = forms.EmailField(label='Email', help_text='ご確認の上、正しく入力してください') 6 message = forms.CharField(label='メッセージ', widget=forms.Textarea) 7 myself = forms.BooleanField(label='同じ内容を受け取る', required=False)
views.py
1from django.shortcuts import render, redirect 2from .forms import ContactForm 3from django.http import HttpResponse 4from django.conf import settings 5from django.core.mail import BadHeaderError, send_mail 6 7 8""" お問い合わせフォーム画面""" 9def contact_form(request): 10 11 if request.method == 'POST': 12 form = ContactForm(request.POST) 13 14 if form.is_valid(): 15 16 subject = form.cleaned_data['subject'] 17 message = form.cleaned_data['message'] 18 sender = form.cleaned_data['sender']#送信元メールアドレス 19 myself = form.cleaned_data['myself'] 20 recipients = [settings.EMAIL_HOST_USER]#宛先 21 22 if myself: 23 recipients.append(sender) 24 try: 25 send_mail(subject, message, sender, recipients) 26 return redirect('complete') 27 except BadHeaderError: 28 return HttpResponse('無効なヘッダーが見つかりました。') 29 30 31 else: 32 form = ContactForm() 33 return render(request, 'contact/contact_form.html', {'form':form}) 34 35 36""" 送信完了画面""" 37def complete(request): 38 return render(request, 'contact/complete.html')
settings,py
1EMAIL_HOST = 'smtp.gmail.com' 2EMAIL_HOST_USER = 'xxx@gmail.com' 3EMAIL_HOST_PASSWORD = 'xxxxxxxxxxxxx 4EMAIL_PORT = 587 5EMAIL_USE_TLS = True
試したこと
ネットの記事でsettings.pyの
EMAIL_HOST
EMAIL_HOST_USER
EMAIL_HOST_PASSWORD
EMAIL_PORT
EMAIL_USE_TLS
を設定しないでsend_mailを使い任意の送信元メールアドレスを設定できている方がいたので私も試したところ右のエラーが起きてしまいダメでした。"ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続でき ませんでした。"

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。