我想使用 Outlook 的 SMTP 服务器在 Django 应用程序中发送电子邮件。问题是,每次尝试发送消息时,我都会收到SSL 错误的版本号错误。
错误回溯:
Traceback (most recent call last):
File "F:\Development\Python\lib\smtplib.py", line 366, in getreply
line = self.file.readline()
File "F:\Development\Python\lib\socket.py", line 297, in readinto
return self._sock.recv_into(b)
File "F:\Development\Python\lib\ssl.py", line 453, in recv_into
return self.read(nbytes, buffer)
File "F:\Development\Python\lib\ssl.py", line 327, in read
v = self._sslobj.read(len, buffer)
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1450)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "F:\Development\Python\lib\site-packages\django\core\handlers\base.py", line 115, in get_response
response …Run Code Online (Sandbox Code Playgroud) 希望有一个简单的功能可以用来安全地存储电子邮件并在需要发送电子邮件时轻松检索。
从电子邮件上的文档看来,应该使用HTML,send_mail()但不能使用HTML send_mass_mail()。我的理解是正确的send_mass_mail()吗?如果可以,那么是否存在一种无需编写自定义循环即可获得HTML功能的变通办法?
我想通过提供纯文本和 html 版本的电子邮件来提高送达率:
text_content = ???
html_content = ???
msg = EmailMultiAlternatives(subject, text_content, 'from@site.com', ['to@site.com'])
msg.attach_alternative(html_content, "text/html")
msg.send()
Run Code Online (Sandbox Code Playgroud)
如何在不复制电子邮件模板的情况下执行此操作?
有没有办法明确告诉 Django 在发送电子邮件时不要通过邮件服务器进行身份验证。
我目前在 settings.py 中使用以下设置来发送电子邮件。
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'my-mail-server'
EMAIL_PORT = 25
Run Code Online (Sandbox Code Playgroud)
请注意,我没有EMAIL_HOST_USER并且EMAIL_HOST_PASSWORD我正在使用的 smtp 邮件服务器不需要客户端进行身份验证
编辑:当我使用这些设置时,我收到此错误
smtp.SMTPSenderRefused: Client was not authenticated
Run Code Online (Sandbox Code Playgroud) 有没有办法让Django给我发错误报告,即使我已将调试设置为True?
我在文档中没有看到任何内容.
编辑:
如果重要的话我会使用Django 1.2.不,这不是一个生产系统.
我正在创建一个Django应用程序,用户可以在其中发送多封电子邮件,包括主要电子邮件.在Django中,SQL用户表有一个CharField来存储单个电子邮件地址.
我目前的计划是创建一个名为"EmailAddress"的新模型,然后通过外键将此模型链接到用户模型,从而允许多个电子邮件.用户的主电子邮件地址存储在email用户表的列中.
但是,我想知道是否有更有效和可靠的方法来做到这一点.我目前正在存储两次主电子邮件地址,我认为这可能会损害数据完整性.
谢谢.
我正在寻找一种从Django Admin Action向用户发送批量电子邮件的方法.这是我到目前为止:
class MyUserAdmin(UserAdmin):
list_display = ['username', 'email', 'first_name', 'last_name', 'is_active', staff]
list_filter = ['groups', 'is_staff', 'is_superuser', 'is_active']
actions = ['send_EMAIL']
def send_EMAIL(self, request, queryset):
from django.core.mail import send_mail
for i in queryset:
if i.email:
send_mail('Subject here', 'Here is the message.', 'from@example.com',[i.email], fail_silently=False)
else:
self.message_user(request, "Mail sent successfully ")
send_EMAIL.short_description = "Send an email to selected users"
Run Code Online (Sandbox Code Playgroud)
这很好但是!我必须每次都对实际消息进行硬编码.如果我能让它变得动态怎么办?我不是每次都需要发送批量电子邮件而是从admin.py更改消息,为什么不创建一个具有空文本输入字段的中间Django管理操作页面,我可以在其中编写每次发送的新消息?
如何才能做到这一点?我正在寻找一个非常开放和通用的详细解答.
我使用namecheap.com注册了域名和私人电子邮件.我正在尝试通过此私人电子邮件发送电子邮件.但是,我在标题中收到错误.
在我的settings.py中,我有以下设置:
EMAIL_HOST = 'mail.privateemail.com'
EMAIL_HOST_USER = 'contact@mysite.com'
EMAIL_HOST_PASSWORD = 'my password'
EMAIL_PORT = 587
EMAIL_USE_TLS = False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Run Code Online (Sandbox Code Playgroud)
我试图通过一个视图发送我的邮件:
send_mail(
'Subject here',
'Here is the message.',
'contact@mysite.com',
['myname@gmail.com'],
fail_silently=False,
)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
SMTP AUTH extension not supported by server.
Run Code Online (Sandbox Code Playgroud)
不知道怎么解决这个问题?谢谢!
django ×10
django-email ×10
python ×5
django-admin ×1
django-forms ×1
django-views ×1
email ×1
python-2.7 ×1
smtp ×1
smtp-auth ×1