2017-05-18 2 views
0

Actuellement, j'ai une notification par email implémentée et cela fonctionne quand vous postez un commentaire vous recevez un email qui vous informe du commentaire posté, maintenant le fait est que cela se passe en interne dans le système , donc, fondamentalement, le personnel (account_handler's) se parlent entre eux et recevoir des notifications par e-mail.envoyer un e-mail en arrière/django en interne django

Maintenant le problème que je suis confronté est que account_handlers qui laisser un commentaire sur mon fil par exemple, nous recevrons tous un e-mail et être notifié que le commentaire a été fait dans ce fil, mais quand je réponds je suis ne rien envoyer, donc pas de retour d'e-mail lorsque vous répondez au commentaire dans le fil, les e-mails ne vont que dans une direction, alors la question est de savoir comment puis-je résoudre ce problème?

Dans mon modèle, je suis en utilisant ce code pour la configuration de notification par courrier électronique de commentaire:

class LeadContact(models.Model): 
    # models here 
    account_handler = models.ForeignKey(User, blank=True, null=True, related_name='handling_leads', 
             on_delete=models.SET_NULL) 
    # some custom function here 

    def send_comment_posted_emails(self, comment): 
     comment_user = comment.user 
     comment_text = comment.comment 
     handler_user = self.account_handler 
     handler_email = handler_user.email 

     if handler_email is not None and handler_email != comment_user.email: 
      current_site = Site.objects.get_current() 
      leads_url = self.get_view_url() + "#CommentsDiv" 
      ctx = {"leads_url": leads_url, "site_name": current_site.name, "leads_sn": self.serial_number, 
        "poster_name": user_util.get_user_full_name_or_user_name(comment_user), 
        "comment_text": comment_text} 
      subject = render_to_string("vinclucms_sales/email/email_sales_comment_posted_subject.txt", ctx) 
      subject = "".join(subject.splitlines()) 
      message = render_to_string("vinclucms_sales/email/email_sales_comment_posted_message.html", ctx) 

      MailManager.send_mail_with_error_handler(subject, message, settings.DEFAULT_FROM_EMAIL, [handler_email], 
                message_html=message) 

    class Meta: 
     # Meta code here 

signal qui est l'envoi d'email:

@receiver(post_save, sender=EmailAddress) 
def handle_email_address_save(sender, instance, created, update_fields, **kwargs): 
    confirm = account_settings.ACCOUNT_EMAIL_CONFIRMATION_EMAIL 
    must_confirm = instance.must_confirm if hasattr(instance, 'must_confirm') else False 
    warning("handle_email_address_save called for email " 
      + str(instance.email) + ", created = " + str(created) 
      + ", confirm = " + str(confirm) + ", must_confirm = " + str(must_confirm)) 
    if confirm and not instance.verified and must_confirm: 
     instance.send_confirmation() 
     warning("handle_email_address_save sent confirmation") 


# TODO: move to signals.py in quotes module 
@receiver(comment_was_posted) 
def handle_comment_posted(sender, comment, request, **kwargs): 
    if comment.content_type.model == 'leadcontact': 
     leadcontac = LeadContact.objects.get(pk=comment.object_pk) 
     leadcontac.send_comment_posted_emails(comment) 

Répondre

0

Il y avait une solution évidente à ce problème, en EmailMessage-Object

reply_to: Une liste ou un tuple d'adresses de destinataires utilisés dans le En-tête "Reply-To" lors de l'envoi de l'e-mail.

Mon django verison est 1.8.9 donc en utilisant ce et en ajoutant à mon MailManager j'ai résoudre le problème.

Note à moi-même: Lire la documentation !!!