2016-06-14 3 views
0

Я работаю над формой для отправки электронной почты, где есть дополнительное приложение.Отправка электронной почты с дополнительным приложением в django

Когда я пытаюсь отправить электронное письмо без прикрепленного файла. Я получил эту ошибку

Key «файл» не найден в MultiValueDict: {}

Любая идея, что я делаю неправильно? Я хотел бы, чтобы отправить его непосредственно на адрес электронной почты без загрузки файла на нашем сервере

forms.py

class jopcion(forms.Form): 
    subject = forms.CharField(max_length=100) 
    thecontent = forms.CharField(widget=forms.Textarea) 
    file = forms.FileField(widget= forms.FileInput (attrs={'name': 'file'}),required=False) 

views.py

def novo(request, template_name='mailme.html'): 
    if request.method == "POST": 
      formulario = jopcion(request.POST or None, request.FILES or None) 
      if formulario.is_valid(): 
         subject = request.POST['subject'] 
         message = request.POST['thecontent'] 
         attach = request.FILES['file'] 

         destination = '[email protected]' 
         html_content = (subject,message,attach) 
         msg = EmailMultiAlternatives('Customer email address', html_content, 'fr[email protected]', [destination]) 
         msg.attach(attach.name, attach.read(), attach.content_type) 
         msg.attach_alternative(html_content, 'text/html')#definimos el contenido como html 
         msg.send() #enviar en correo 
         return render_to_response('done.html', context_instance=RequestContext(request)) 
     else: 
        formulario = jopcion() 

     ctx = {'form': formulario, 'text_dc': file} 
     return render_to_response(template_name, ctx , context_instance = RequestContext(request)) 
+0

Ваш код не проверяет, существует ли 'FILES ['file']' перед попыткой его извлечения и прикрепить его к письму. Если это необязательно, вам нужно сначала проверить, существует ли он, прежде чем пытаться его подключить. – solarissmoke

ответ

0

Если вы не отправляете файл , request.FILE будет пустым словарным объектом. Documentation

Исходя из этого, вам необходимо проверить, присутствует ли ключ в этом dict. примеры:

if 'file' in request.FILES: 
    attach = request.FILES['file'] 

#or 
attach = request.FILES.get('file') 
+0

Большое вам спасибо !!! – dario

Смежные вопросы