Advertisement
Guest User

Untitled

a guest
Sep 14th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.57 KB | None | 0 0
  1. @app.task
  2. def enviar_boletos_por_email(user_id, titulos_id, session, reenvio):
  3. user = Usuario.objects.get(id=user_id)
  4. empresa = user.empresa
  5. titulos = Boleto.objects.using(user.banco).filter(
  6. conta_receber__id__in=titulos_id,
  7. )
  8.  
  9. if not reenvio:
  10. titulos = titulos.filter(
  11. email_enviado=False
  12. )
  13.  
  14. titulos_count = titulos.count()
  15.  
  16. if empresa.login_smtp is not None and empresa.login_smtp != '':
  17. email_login = empresa.login_smtp
  18. else:
  19. email_login = empresa.email_boleto
  20.  
  21. email_sender = empresa.email_boleto
  22.  
  23. senha_email = empresa.senha_email
  24.  
  25. smtp_server = empresa.smtp_serv
  26. smtp_port = empresa.smtp_port
  27. ssl_emp = empresa.ssl
  28. tls_emp = empresa.tls
  29.  
  30. connection = get_connection(
  31. host=smtp_server,
  32. port=smtp_port,
  33. username=email_login,
  34. password=senha_email,
  35. use_tls=tls_emp,
  36. use_ssl=ssl_emp
  37. )
  38.  
  39. try:
  40. conn = connection.open()
  41. if conn is False:
  42. raise Exception
  43. except Exception as err:
  44. print(err)
  45. Mensage(session, 'envio_boletos_email', {
  46. 'erro': 'Erro ao conectar com o servidor de email.'
  47. }).send()
  48. return
  49.  
  50. try:
  51. Mensage(session, 'envio_boletos_email', {'logg':
  52. 'Realizando login...'
  53. }).send()
  54.  
  55. for count, titulo in enumerate(titulos):
  56. count += 1
  57.  
  58. enviado = False
  59.  
  60. while not enviado:
  61.  
  62. Mensage(session, 'envio_boletos_email', {
  63. 'logg': 'Enviando boleto {} de {}...'.format(count, titulos_count)
  64. }).send()
  65.  
  66. try:
  67. cliente_nome = titulo.conta_receber.conta.cliente.nome
  68. cliente_nome = format_string_remessa(cliente_nome)
  69. cliente_email = titulo.conta_receber.conta.cliente.email
  70.  
  71. if cliente_email is None or cliente_email == '':
  72. enviado = True
  73. continue
  74.  
  75. msg_file = MIMEBase('application', 'pdf')
  76. msg_file.set_payload(titulo.get_pdf_buffer(user))
  77. encoders.encode_base64(msg_file)
  78. msg_file.add_header('Content-Disposition', 'attachment', filename='%s' % (
  79. cliente_nome.split(' ')[0] + '-' +
  80. cliente_nome.split(' ')[len(cliente_nome.split(' ')) - 1] +
  81. '-BOLETO-%s.pdf' % (
  82. date.today().strftime('%Y%m%d'),
  83. ),
  84. ))
  85.  
  86. message = EmailMessage(
  87. connection=connection,
  88. subject=empresa.email_assunto,
  89. body=empresa.email_msg,
  90. from_email=email_sender,
  91. to=[cliente_email.lower()],
  92. attachments=[msg_file]
  93. ).send(fail_silently=False)
  94.  
  95. enviado = True
  96.  
  97. titulo.email_enviado = enviado
  98. titulo.save()
  99.  
  100. time.sleep(2)
  101.  
  102. except smtplib.SMTPServerDisconnected as err:
  103. print("{} - {}".format(str(err), str(type(err))))
  104. Mensage(session, 'envio_boletos_email', {
  105. 'logg': 'Desconectado do servidor, restabelecendo conexão...'
  106. }).send()
  107. connection.close()
  108. connection.open()
  109.  
  110. except smtplib.SMTPSenderRefused as err:
  111. print("{} - {}".format(str(err), str(type(err))))
  112. Mensage(session, 'envio_boletos_email', {
  113. 'logg': 'Desconectado do servidor, restabelecendo conexão...'
  114. }).send()
  115. connection.close()
  116. connection.open()
  117.  
  118. except smtplib.SMTPDataError as err:
  119. print("{} - {}".format(str(err), str(type(err))))
  120. if 'quota exceeded' not in str(err) and 'atingiu o limite diario' not in str(err):
  121. Mensage(session, 'envio_boletos_email', {
  122. 'erro': 'Erro ao enviar emails...'
  123. }).send()
  124. else:
  125. Mensage(session, 'envio_boletos_email', {
  126. 'erro': 'Limite diário para envio de emails excedido.'
  127. }).send()
  128. connection.close()
  129. return
  130.  
  131. except Exception as err:
  132. print("{} - {}".format(str(err), str(type(err))))
  133. Mensage(session, 'envio_boletos_email', {
  134. 'erro': 'Erro ao enviar boleto {} (Parcela: {} - Cliente: {})...'.format(
  135. count,
  136. titulo.conta_receber.id,
  137. cliente_nome
  138. )
  139. }).send()
  140. connection.close()
  141. enviado = True
  142.  
  143. Mensage(session, 'envio_boletos_email', {'end':
  144. 'Boletos enviados.'
  145. }).send()
  146. except Exception as err:
  147. print("{} - {}".format(str(err), str(type(err))))
  148. Mensage(session, 'envio_boletos_email', {'erro':
  149. 'Erro ao realizar login.'
  150. }).send()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement