웹 프로그래밍

[Django] 단체메일 전송하기

728x90
반응형

홍보메일같은걸 보내고 싶어서 만들었다.

늘그렇듯 한번에 못하고 뻘짓을 좀했는데 여러개 거칠거없이 save()함수를 이용하면 된다는 깨달음을 얻었다.

제목과 메일내용을 담은 모델이 저장되면 저장되는 과정에서 모든 사용자에게 메일을 전송한다.

 

models.py

class AdvertiseMail(models.Model):
    date = models.DateTimeField(default=timezone.now)
    subject = models.CharField(max_length=100)
    mail = models.TextField(blank=False, null=True)
    send_it = models.BooleanField(default=False)

    def save(self):
        if self.send_it:
            all_users = get_user_model().objects.all()
            for user in all_users:
                send_mail(str(self.subject),
                          '',
                          'from.devdreamer@gmail.com',
                          [user.email],
                          html_message=self.mail,
                          fail_silently=False)

admin에 mail영역을 summernote로 넣어놔서 전송하면 html 태그들이 그대로 함께 전송되는 문제가 있었다. html_message argument를 이용하면 해결된다.

 

사진저장과정에서 용량을 줄이는 로직을 넣을때도 같은 방법을 이용했는데 바로 생각나질 않았다. 데이터 저장과정에서 바로 수행되어야할 로직이 있다면 save()함수를 이용하자.

728x90
반응형