15.Django发送邮件

发送邮件是一个比较重要的功能,比如注册的时候校验,重要通知等等。Django也内置了这一功能可以方便的然我们 集成。

创建一个sendmail的项目和myapp的app。

在setting.py中添加email的配置

EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.qq.com'  # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = 'xxxx@qq.com' # 帐号
EMAIL_HOST_PASSWORD = 'xxxx'  # 密码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
#或者
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = False
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxxxx@qq.com'
EMAIL_HOST_PASSWORD = 'xxxx'
DEFAULT_FROM_EMAIL = 'xx@qq.com'

注意EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True DEFAULT_FROM_EMAIL还可以按照下面的格式

DEFAULT_FROM_EMAIL = 'xxxx <xxx@163.com>'

在views.py中

from django.http import HttpResponse

# 导包
from django.core.mail import send_mail

def index(request):

    send_mail("subject here", # 主题,标题
              'this is the message', # 内容
              'xxxx@qq.com', # 发送地址
              ['xxx@qq.com'], ##接收地址 可以多个
              fail_silently=False
              )
    return HttpResponse('success')

urls.py

from myapp.views import index
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index)
]

启动项目,打开首页就可以发送邮件了。

发送邮件的代码可以卸载任何位置,这里只是为了展示如何使用,所以写在视图上。

发送多个邮件:

from django.core.mail import send_mass_mail


message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com'])
message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com'])


send_mass_mail((message1, message2), fail_silently=False)

添加附件:

from django.conf import settings
from django.core.mail import EmailMultiAlternatives


from_email = settings.DEFAULT_FROM_EMAIL
# subject 主题 content 内容 to_addr 是一个列表,发送给哪些人
msg = EmailMultiAlternatives(subject, content, from_email, [to_addr])

msg.content_subtype = "类型"

# 添加附件(可选)
msg.attach_file('文件路径')

# 发送
msg.send()
声明:原创文章,版权所有,转载请注明出处,https://litets.com。