Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-尝试使用send_mail()在python shell中发送电子邮件,但无法工作_Django_Email - Fatal编程技术网

Django-尝试使用send_mail()在python shell中发送电子邮件,但无法工作

Django-尝试使用send_mail()在python shell中发送电子邮件,但无法工作,django,email,Django,Email,我试图在Django项目中发送帐户激活链接,但它无法工作。所以我在shell中尝试了非常基本的send_mail()函数,看看它是否正在发送 在settin.py中 AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', # necessary for django.auth 'survey.modelbackend.EmailBackend' # custom backend to

我试图在Django项目中发送帐户激活链接,但它无法工作。所以我在shell中尝试了非常基本的send_mail()函数,看看它是否正在发送

在settin.py中

    AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend', # necessary for django.auth
    'survey.modelbackend.EmailBackend' # custom backend to authenticate using the email field
)

    #settings for the email 
    EMAIL_HOST = 'localhost'
    EMAIL_PORT = 25
    DEFAULT_FROM_EMAIL = 'webmaster@localhost'
(我正在使用电子邮件设置中的所有默认值)

我在壳里打字

>>> from django.core.mail import send_mail
>>> send_mail('Subject here', 'Here is the message.', 'from@example.com',
    ...     ['myemailaddress@gmail.com'], fail_silently=False)
上面一行后返回1,但我无法在自己的电子邮件中获取电子邮件

有人能帮我解决这个问题,并解释为什么电子邮件没有发送到我的电子邮件吗


非常感谢。

我要说的是,邮件可能正在发送,但它正在命中你的垃圾邮件过滤器

除非将
django.core.mail.backends.smtp.EmailBackend
以外的内容设置为您的
设置.EMAIL\u BACKEND
,否则只有在后端成功连接到服务器并通知服务器发送邮件的情况下,才会返回
True
(或
1
)。如果
fail\u silent=False
,这意味着
send\u mail
将返回
True
或引发异常。这意味着错误要么在您的SMTP中,要么直接发送到“垃圾邮件”


但是,如果您已经检查过垃圾邮件,则有一些方法可以使SMTP服务器以静默方式失败。请参阅本文(最常见的
*nix
应用程序之一)或(适用于Windows的SMTP服务器之一)。如果您使用的是IIS,看起来它解决了一些潜在问题。

Hy,我尝试过询问,这可以成功发送电子邮件,而无需在settings.py中进行任何设置

首先,添加这两个导入

import smtplib
from email.mime.text import MIMEText as text
那么发送电子邮件的代码可能是这样的

def send_email(sender,receiver,message,subject):
    sender = sender
    receivers = receiver
    m = text(message)
    m['Subject'] = subject
    m['From'] = sender
    m['To'] = receiver

   # message = message

    try:
       smtpObj = smtplib.SMTP('localhost')
       smtpObj.sendmail(sender, receivers, str(m))
       print "Successfully sent email"
    except SMTPException:
       print "Error: unable to send email" 

这和预期的一样。

您是否在localhost上配置了邮件服务器以中继电子邮件?您是否配置了SMTP服务器?hy..感谢您的回复,我刚刚得到答案,并将其发布在下面,请问您所说的SMTP服务器设置是什么意思?对不起,这有点新鲜。。