Django 发送邮件

1. Django 发送邮件

一般在用户注册成功后,会发送一封电邮给对方注册邮箱。进一步还可能要去用户点击邮件中链接以进行注册确认。

1.1 发送纯文本邮件

Python 内置邮件发送模块 smtp,Django 对 smtp 模板进行了简单的封装。

  1. 首先在项目中配置 settings :
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'	# 模块
EMAIL_HOST = 'smtp.sina.com'		# 发送方 smtp 服务器地址,这里用的是新浪
EMAIL_PORT = 25				# 默认 smtp 端口
EMAIL_HOST_USER = 'xxx@sina.com'		# 发送服务器用户名
EMAIL_HOST_PASSWORD = 'xxxxxxxxxxx'		# 授权码

# QQ:smtp.qq.com  (端口465或587) pop.qq.com 端口995

Tips

  • 需要事先开启邮箱的 stmp 服务
  • 有些邮件公司不开放 smtp 服务,有些需要 ssl 安全机制等
  • 网易邮箱发送成功率高
  1. 在项目根目录下新建一个 send_mail.py文件,然后写入下面的内容:
import os
from django.core.mail import send_mail

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

if __name__ == '__main__':
    #  纯文本邮件
    send_mail(
        '来自 127.0.0.1:8080 的测试邮件',      # 主题 subject
        '欢迎访问 127.0.0.1:8080,这里是。。。',    # 邮件内容
        'xxxxxx@163.com',          # 发送方
        ['xxxx@qq.com'],       # 接收方
    )

运行 send_mail.py 文件,测试是否发送成功。

1.2. 发送 HTML 格式邮件

很多情况下我们在注册某个网站时,会发送一封邮件给我们的邮箱,这个邮件是超链接的格式发送的,确认后一般可以再定位到网站登录界面。

为了安全考虑,邮件服务提供商都会禁止使用 HTML 内容,但是对 httphttps 开头的链接还是可以点击的。

下面我们在 Django 中实现发送带 HTML 格式的邮件:

import os
from django.core.mail import EmailMultiAlternatives

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

if __name__ == '__main__':
   subject, from_email, to = '来自127.0.0.1:8080的测试邮件', 'xxx@163.com', 'xxx@qq.com'
   text_content = '欢迎访问 127.0.0.1:8080'
   html_content = '<p>欢迎访问<a href="https://www.baidu.com" target=blank>www.baidu.com</a>,这里是xxx的博客网站</p>'

   msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
   msg.attach_alternative(html_content, 'text/html')
   msg.send()

正常情况会发送 html_content 中内容,如果发送无效将会发送 text_content

示例

下面是一个 HTML 邮件示例,可以单独新建一个文件,然后在视图中调用即可,也可以直接在视图中定义:

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


def send_email(email, code):
    subject = '来自127.0.0.1:8080的测试邮件'
    text_content = '感谢注册 127.0.0.1:8080,这里是xxx的博客,如果你看到这条消息!' \
                   '说明你的邮箱服务器不支持 HTML 链接功能,请联系管理员!'
    html_content = """
                    <p>感谢注册<a href='https://{}/confirm/?code={}' target=blank>www.baidu.com</a>
                    这里是xxx的博客
                    </p>
                    <p>请点击站点链接完成注册确认!</p>
                    <p>此链接有效期为{}天!</p>
                    """.format('127.0.0.1:8080', code, settings.CONFIRM_DAYS)

    msg = EmailMultiAlternatives(subject, text_content, settings.EMAIL_HOST_USER, [email])
    msg.attach_alternative(html_content, 'text/html')
    msg.send()
from django.shortcuts import render
from django.conf import settings

def index(request):
    code = 1234
    email = request.POST.get('email')
    # 发送邮件
    send_mail.send_email(email, code)
    return render(request, 'xxx/xxx.html')
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 我可以给你一些建议吗?用Python Django发送电子邮件可以利用Django的内置模块,如django.core.mail来发送电子邮件。你可以参考官方文档中的指导:https://docs.djangoproject.com/en/2.2/topics/email/。此外,也可以使用第三方库,如Django-mailer和Django-mail-queue来发送邮件,这可以帮助您更容易地实现更多功能。 ### 回答2: PythonDjango是一个强大的Web框架,可以方便地实现发送邮件的功能。Django提供了一个内置的邮件模块用于管理和发送电子邮件,可以通过简单的配置和调用就可以实现邮件的发送。 首先,需要在Django的settings.py文件中进行邮件配置。可以设置SMTP服务器的主机、端口、账号、密码等信息。例如: ```python EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.example.com' # SMTP服务器主机 EMAIL_PORT = 587 # SMTP服务器端口 EMAIL_HOST_USER = 'your_email@example.com' # 邮箱账号 EMAIL_HOST_PASSWORD = 'your_password' # 邮箱密码 EMAIL_USE_TLS = True # 启用TLS加密 DEFAULT_FROM_EMAIL = 'your_email@example.com' # 默认发件人 ``` 接下来,可以在Django的视图函数或模型方法中使用EmailMessage类来创建邮件对象,并通过send()方法发送邮件。例如: ```python from django.core.mail import EmailMessage def send_email(request): subject = '邮件主题' message = '邮件内容' from_email = 'your_email@example.com' # 发件人,可选项,如果不填则使用DEFAULT_FROM_EMAIL to_email = ['to_email@example.com'] # 收件人,可以是一个列表 cc_email = ['cc_email@example.com'] # 抄送人,可选项,可以是一个列表 email = EmailMessage(subject, message, from_email, to_email, cc=cc_email) email.send() ``` 通过调用EmailMessage类的构造函数,可以传入邮件的主题、内容、发件人、收件人和抄送人等信息。最后调用send()方法即可发送邮件。 此外,还可以设置附件、HTML内容、邮件头等更多参数,以满足不同的发送需求。 总结来说,Django提供了丰富的邮件管理功能,可以方便地处理邮件的发送和配置。使用PythonDjango框架,我们可以轻松实现邮件发送功能,提升Web应用的用户体验。 ### 回答3: 在Python中使用Django发送邮件相对简单。首先,我们需要在settings.py文件中配置邮件设置。 在settings.py文件中,需要进行以下配置: 1. 设置邮件主机和端口:在EMAIL_HOST中设置邮件主机地址,例如"smtp.gmail.com",在EMAIL_PORT中设置邮件主机端口号,例如"587"。 2. 设置邮件认证信息:在EMAIL_HOST_USER中设置发件人的邮箱地址,例如"example@gmail.com",在EMAIL_HOST_PASSWORD中设置发件人的邮箱密码。 3. 设置邮件使用的协议:在EMAIL_USE_TLS中设置是否使用TLS(传输层安全)协议进行加密通信,一般情况下可以设置为True。 4. 设置邮件发送的默认地址:在DEFAULT_FROM_EMAIL中设置发送邮件的默认地址,例如"example@gmail.com"。 一旦配置完成,我们就可以在视图函数或其他需要发送邮件的地方使用Django提供的邮件模块进行邮件发送。下面是一个发送邮件的示例代码: ```python from django.core.mail import EmailMessage def send_email(request): email = EmailMessage( 'Hello', 'Body goes here', 'example@gmail.com', ['recipient1@example.com', 'recipient2@example.com'], ['bcc@example.com'], reply_to=['another@example.com'], headers={'Message-ID': 'foo'}, ) email.send() ``` 在上面的示例中,我们创建了一个EmailMessage对象,设置了邮件的主题、内容以及发送和接收地址等信息,并调用`send()`方法发送邮件。 需要注意的是,为了能够发送邮件,我们需要在服务器上安装邮件客户端,例如在Linux系统上可以使用`sudo apt-get install mailutils`命令安装`mailutils`软件。 综上所述,使用Django发送邮件可以通过配置settings.py文件以及使用邮件模块来实现,非常方便快捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风老魔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值