一.通过QQ邮箱发邮件
本案例是基于django框架的结合rabbitmq实现异步发邮件,新建一个django项目并进行对应的配置,然后编写对应mvc代码,直接上代码
1.1 生产者发送邮件
import pika
class RabbitMQSendMail:
def __init__(self, email):
self.host = '192.168.xx.xxx'
self.port = 5672
self.user = 'xxx'
self.password = 'xxx'
self.rmq_obj = None
self.param_config = None
self.channel = None
self.email = email
def connection(self):
self.param_config = pika.ConnectionParameters(
virtual_host='mymTest',
host=self.host,
port=self.port,
credentials=pika.PlainCredentials(self.user, self.password)
)
self.rmq_obj = pika.BlockingConnection(self.param_config)
def send(self):
self.connection()
self.channel = self.rmq_obj.channel()
# self.channel.exchange_declare(exchange='mym', exchange_type='direct', durable=True)
self.channel.basic_publish(
exchange='businessExchange', # exchange为空表示简单模式
routing_key='needKey',
body=self.email,
properties=pika.BasicProperties(delivery_mode=2, )
)
print('发送用户邮箱{}到MQ queue成功'.format(self.email))
self.rmq_obj.close()
1.2 视图函数,模型,模板部分代码
model.py部分代码
from django.db import models
from django.forms import ModelForm
import datetime
# Create your models here.
class UserInfo(models.Model):
username = models.CharField(max_length=10, verbose_name='姓名')
password = models.CharField(max_length=20, verbose_name='邮箱')
create_time = models.DateField(verbose_name="时间", default=datetime.datetime.now)
class UserModelForm(ModelForm):
class Meta:
model = UserInfo
fields = "__all__"
view.py视图函数部分代码
from django.shortcuts import render
from .models import UserModelForm
from django.http import JsonResponse
from Controller.mq_send_email import RabbitMQSendMail
# Create your views here.
def register_email(request):
if request.method == "GET":
# 要写个form类
form = UserModelForm()
return render(request, 'index.html', {
'form': form})
if request.method == "POST":
email = request.POST.get('password')