html - 在 Django 中发送带有附件的 Gmail
问题描述
我也在尝试在 Django 中发送带有附件的 Gmail。
这是我的views.py:
def index(request):
if request.method != 'POST':
form = EmailForm()
context = {'email_form': form}
return render(request, 'app/index.html', context)
form = EmailForm(request.POST, request.FILES)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
email = form.cleaned_data['email']
attach = request.FILES['attach']
try:
mail = EmailMessage(subject, message, settings.EMAIL_HOST_USER, [email])
mail.attach_file(attach.name, attach.read(), attach.content_type)
mail.send()
context = {'message': 'email sended'}
print("email sended")
return render(request, 'app/email_template.html', context)
except:
context = {'message': 'Either the attachment is too big or corrupt'}
print("Either the attachment is too big or corrupt")
return render(request, 'app/index.html', context)
context = {'message': 'Unable to send email. Please try again later'}
return render(request, 'app/index.html', context)
表格.py:
class EmailForm(forms.Form):
email = forms.EmailField()
subject = forms.CharField(max_length=100)
attach = forms.Field(widget = forms.FileInput)
message = forms.CharField(widget = forms.Textarea)
模板:
<div class="container-fluid">
<div class="col-xl-4">
<h1>Welcome in django's world</h1>
{{message}}
<form method="POST" action ="." enctype="multipart/form-data">
{% csrf_token %}
<br></br>
{{email_form.as_p}}
<label> </label><label> </label><label> </label>
<input type ="submit" name = "send" value = "Send"/>
</form>
</div>
</div>
现在,每次我尝试发送邮件时,它都会显示Either the attachment is too big or corrupt
,这意味着它会经过except:
块,而不是 try 块。我只是打印异常消息,它说
__init__() takes from 1 to 2 positional arguments but 5 were given
现在我该如何解决这个问题,以便成功发送 Gmail?
解决方案
推荐阅读
- javascript - ng-table 如何使用 Angular 5 从 API AWS 获取数据
- protocol-buffers - 使用 protobuff 编译的 qtcreator 问题
- python - 尝试在 Keras 中构建编码器-解码器模型时出现图形断开错误
- google-cloud-storage - Google 存储服务身份验证不适用于 cron 作业
- rust - 有没有办法返回一个函数并在没有生命周期的情况下进行闭包?
- c++ - Windows 2012 R2 closesocket() 挂在侦听套接字上
- javascript - 尝试使用来自另一个函数的变量
- ios - 将 iOS 应用程序从一个开发者帐户转移到另一个帐户?
- jquery - 更改 div 的宽度而不更改兄弟 div 的宽度
- c# - 事件被声明为委托