Django-尝试使用send_mail()在python shell中发送电子邮件,但无法工作
我试图在Django项目中发送帐户激活链接,但它无法工作。所以我在shell中尝试了非常基本的send_mail()函数,看看它是否正在发送 在settin.py中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
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服务器设置是什么意思?对不起,这有点新鲜。。