Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Django] Obtenir une adresse mail de la bdd

    9 septembre 2014 à 15:56:14

    Bonjour !

    Je suis entrain de créer un système d’envoi de mail, avec une liste de destinataire multiple.

    J'ai donc une class qui stocke les infos dont l'adresse mail et j'aimerai l'utiliser comme recipient pour mon mail.

    Voici mes classes :

    class Recipient(models.Model):
    
        name = models.CharField(max_length=255, verbose_name= ('Nom'), null=True, blank=True)
        first_name = models.CharField(max_length=255, verbose_name= ('Prénom'), null=True, blank=True)
        mail = models.EmailField(verbose_name= ('Adresse du destinataire'))
        def __unicode__(self):
            return u'%s %s' % (self.name, self.first_name)
    
    class Mail(models.Model):
    
        subject = models.CharField(max_length=255, verbose_name= ('Sujet'))
        content = tinymce_models.HTMLField(verbose_name= ('Contenu'))
    
        recipients = models.ManyToManyField(Recipient, verbose_name= ('Destinataires'), null=True, blank=True, related_name='mails')


    Et voici mon view :

    def compagnes_index(request):
        if request.method == 'POST':
            form = MailForm(request.POST)
    
            if form.is_valid():
    
                #recipients = form.cleaned_data['mails']
                subject = form.cleaned_data['subject']
                content = form.cleaned_data['content']
                title = ('Newsletter')
               
                content = loader.render_to_string("emails/email_simple.html", {
                    "website": settings.WEBSITE,
                    "email_support": settings.DEFAULT_FROM_EMAIL,
                    "title": title,
                    "content": content,
                    })           
                msg = EmailMultiAlternatives(subject.encode('utf-8'), content.encode('utf-8'), settings.DEFAULT_FROM_EMAIL, ['example@example.com'])
                msg.attach_alternative(content.encode('utf-8'), "text/html")
                msg.send()
         
                envoi = True
    
        else:
            form = MailForm()
    
        return render(request, 'compagnes/compagnes.html', locals())

    Je voudrais que mon recipient du mail sois la table mail qui est donc dans la class Recipient

    Merci de m'avoir lu en espérant que vous pouvez m'aider. Si je n'ai pas été clair ou si vous avez besoin de plus de précisions demandez.

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 septembre 2014 à 21:28:21

      Bonjour,

      dans ta vue tu peux écrire la fonction

      def emailOnRecipient():
          liste_email=[]
          emailObjects=Recipient.objects.all()            
              for mailObj in emailObjects:
                  email= mailObj.nom
                  str(email)
                  liste_email.append(email)
          return(liste_email)



      Retourne la liste d'email contenue dans recipient.

      Je pense que le code est clair. Et aussi qu'il marche...

      Cordialement.

      -
      Edité par Anonyme 11 septembre 2014 à 21:34:27

      • Partager sur Facebook
      • Partager sur Twitter

      [Django] Obtenir une adresse mail de la bdd

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown