Django公司smtplib.SMTPSenderRefused:(530,b'5.5.1需要验证….)

2024-09-28 01:25:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图让用户通过表单向我的个人帐户发送电子邮件。一开始它是给我看的

socket.gaierror: [Errno 11004] getaddrinfo failed

我通过在设备中安装和配置hMailServer解决了这个错误。现在,当我试图通过朋友的电子邮件发送邮件时,它会用我自己的帐户发送电子邮件。当我从设置文件中删除MAIL_HOST_USER = 'my_email'时,它显示

smtplib.SMTPSenderRefused

标题中提到的错误。任何建议或相关链接将不胜感激。在

我的代码是:

在设置.py在

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_PORT = 25
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'my_email'
EMAIL_HOST_PASSWORD = 'my_password'
EMAIL_USE_TLS = True

在视图.py在

^{pr2}$

Tags: 用户pyhost电子邮件emailmy错误socket
2条回答

注意,你可以配置gmail来代表googleapps组织(由gmail提供支持)中的任何发送地址来转发消息,但正如danielhepper所指出的,这不是gmail个人地址的默认值。也就是说,我敢打赌,OP的问题很可能是端口设置不正确。在gmail中,对于使用SMTP的TLS,端口设置应该是465或587。在

Gmail和其他电子邮件提供商或正确配置的邮件服务器一样,不允许您设置任意的From地址。一个允许这一点的电子邮件服务器将被垃圾邮件发送者滥用,并很快发现自己在垃圾邮件黑名单上。在

您可以做的是将my_email设置为sender,并添加一个Reply-To头,其中包含通过表单提供的电子邮件地址。在

您必须创建一个EmailMessage实例并调用send()

from django.core.mail import EmailMessage
...
email = EmailMessage(
    subject=form.cleaned_data['title'],
    message=form.cleaned_data['content'],
    from_email='my_email',
    recipient_list=['my_email'],
    reply_to=form.cleaned_data['contact_email']
)
sent = email.send(fail_silently=False)
if sent:
    return render(request, 'index.html', {'form': form, 'message': 'Message delivered successfully', 'error':'', 'email_sent': 1 })

请注意,Gmail对通过这种方式发送的电子邮件数量有一些限制。确保您不会意外地阻止您的帐户。在

相关问题 更多 >

    热门问题