【问题标题】:django send_mail not sending mail [duplicate]django send_mail不发送邮件[重复]
【发布时间】:2017-03-30 19:11:27
【问题描述】:

我只是想发送电子邮件作为 django 联系页面的一部分。

from django.shortcuts import render
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django import forms
from django.core.mail import send_mail, EmailMessage
from StudioHanel.forms import ContactForm
import traceback
import time

def index(request):
    return render(request, 'StudioHanel/index.html')

def contact(request):

    send_mail(
    'Subject here',
    'Here is the message.',
    'xx@gmail.com',
    ['xx@gmail.com'],
    fail_silently=False,
    )

    mystack = ''
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid() or True:
            subject = form.cleaned_data['subject']
            message = form.cleaned_data['message']
            sender = form.cleaned_data['sender']

            # recipients = ['cordelia@studio-hanel.com', 'sylvia@studio-hanel.com', 'admin@studio-hanel.com'] 
            recipients = [ 'xx@gmail.com'] 
            send_mail(subject, message, sender, recipients, fail_silently=False)
            time.wait(10)
            # EmailMessage(subject, message, sender, to = recipients)
            return HttpResponse('success')

    else:
        form = ContactForm()

    return render(request, 'StudioHanel/contact.html', {
        'form': form, 'mystack': mystack 
    })        

它什么也没做。对请求的响应是 200。没有堆栈跟踪。

我在settings.py中有以下设置。

# Email settings
DEFAULT_FROM_EMAIL = 'xx@gmail.com'
SERVER_EMAIL = 'xx@gmail.com'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'xx@gmail.com'
EMAIL_HOST_PASSWORD = 'xx'

电子邮件帐户可以通过软件发送电子邮件。我已经用

测试过了
import smtplib
fromaddr = 'xx@gmail.com'
toaddrs  = 'xx@gmail.com'
msg = 'Why,Oh why!'
username = 'xx@gmail.com'
password = 'xx'
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo()
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

我不知道为什么它不起作用。

任何帮助都非常感谢。 迈克

【问题讨论】:

  • 我使用的是 django 1.7。显然 reply_to 不可用。
  • @brunodesthuilliers 应该将后端配置放在哪里。我已将所有这些都放在 settings.py 中。 DEFAULT_FROM_EMAIL = 'xx@gmail.com' SERVER_EMAIL = 'xx@gmail.com' EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = 'xx@gmail.com' EMAIL_HOST_PASSWORD = 'xx'
  • 我可以发送电子邮件,但发件人始终与 EMAIL_HOST_USER 相同,并且我使用的是 Gmail。原因是什么?我的意思是 smpt 服务器不允许我将发件人设置为 EMAIL_HOST_USER 以外的某个值。这是我能想到的唯一可能的情况。在业务 smpt 服务器中,我不应该有同样的问题。对吗????
  • > 应该把后端配置放在哪里

标签: python django


【解决方案1】:

在 djgano 1.7 中,您只能通过以下标题添加回复字段:

让我知道这是否有效。干杯

            recipients = [ 'mike.xxx@gmail.com'] 
            bcc = []
            logger.debug('Contact Before Sending Email!') 
            headers = {'Reply-To': sender}
            email = EmailMessage(
                subject,
                message,
                sender,
                recipients,
                bcc,
                headers = headers,                    
            )

            email.send()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2015-12-17
    • 2013-09-24
    • 2022-01-17
    • 2022-08-07
    • 1970-01-01
    • 2021-05-15
    相关资源
    最近更新 更多