瀏覽代碼

notify user with premium plan ending soon

Son NK 5 年之前
父節點
當前提交
52f364d73b
共有 4 個文件被更改,包括 80 次插入1 次删除
  1. 28 1
      cron.py
  2. 6 0
      crontab.yml
  3. 31 0
      templates/emails/transactional/subscription-end.html
  4. 15 0
      templates/emails/transactional/subscription-end.txt

+ 28 - 1
cron.py

@@ -30,6 +30,25 @@ def notify_trial_end():
             send_trial_end_soon_email(user)
 
 
+def notify_premium_end():
+    """sent to user who has canceled their subscription and who has their subscription ending soon"""
+    for sub in Subscription.query.filter(Subscription.cancelled == True).all():
+        if (
+            arrow.now().shift(days=3).date()
+            > sub.next_bill_date
+            >= arrow.now().shift(days=2).date()
+        ):
+            user = sub.user
+            LOG.d(f"Send subscription ending soon email to user {user}")
+
+            send_email(
+                user.email,
+                f"Your subscription will end soon {user.name}",
+                render("transactional/subscription-end.txt", user=user),
+                render("transactional/subscription-end.html", user=user),
+            )
+
+
 def notify_manual_sub_end():
     for manual_sub in ManualSubscription.query.all():
         need_reminder = False
@@ -148,7 +167,12 @@ if __name__ == "__main__":
         "--job",
         help="Choose a cron job to run",
         type=str,
-        choices=["stats", "notify_trial_end", "notify_manual_subscription_end"],
+        choices=[
+            "stats",
+            "notify_trial_end",
+            "notify_manual_subscription_end",
+            "notify_premium_end",
+        ],
     )
     args = parser.parse_args()
 
@@ -164,3 +188,6 @@ if __name__ == "__main__":
         elif args.job == "notify_manual_subscription_end":
             LOG.d("Notify users with manual subscription ending soon")
             notify_manual_sub_end()
+        elif args.job == "notify_premium_end":
+            LOG.d("Notify users with premium ending soon")
+            notify_premium_end()

+ 6 - 0
crontab.yml

@@ -16,3 +16,9 @@ jobs:
     shell: /bin/bash
     schedule: "0 9 * * *"
     captureStderr: true
+
+  - name: SimpleLogin Notify Premium Ends
+    command: python /code/cron.py -j notify_premium_end
+    shell: /bin/bash
+    schedule: "0 10 * * *"
+    captureStderr: true

+ 31 - 0
templates/emails/transactional/subscription-end.html

@@ -0,0 +1,31 @@
+{% extends "base.html" %}
+
+{% block content %}
+  {% if name %}
+    {{ render_text("Hi " + user.name + ",") }}
+  {% else %}
+    {{ render_text("Hi,") }}
+  {% endif %}
+
+  {{ render_text("Your subscription will end on " + user.next_bill_date() + ".") }}
+
+  {{ render_text("When the subscription ends:") }}
+
+  {{ render_text("- All aliases/domains/directories you have created are <b>kept</b> and continue working normally.") }}
+  {{ render_text("- You cannot create new aliases if you exceed the free plan limit, i.e. have more than 5 aliases.") }}
+  {{ render_text("- As features like <b>catch-all</b> or <b>directory</b> allow you to create aliases on-the-fly, those aliases cannot be automatically created if you have more than 5 aliases.") }}
+  {{ render_text("- You cannot add new domain or directory.") }}
+
+  {{ render_text('You can upgrade today to continue using all these Premium features (and much more coming).') }}
+
+  {{ render_button("Upgrade your account", "https://app.simplelogin.io/dashboard/pricing") }}
+
+  {{ render_text('Regardless of your choice, we want to say thank you for trying SimpleLogin. We know the product
+  requires an investment of your time, and we appreciate you giving us a chance.') }}
+  {{ render_text('Thanks, <br />SimpleLogin Team.') }}
+  {{ render_text('P.S. If you have any questions or need any help, please don\'t hesitate to reach out. You can simply reply to this email or reach us via Twitter/Github.') }}
+  {{ raw_url("https://app.simplelogin.io/dashboard/pricing") }}
+
+
+{% endblock %}
+

+ 15 - 0
templates/emails/transactional/subscription-end.txt

@@ -0,0 +1,15 @@
+Hi {{user.name}}
+
+Your subscription will end on {{ user.next_bill_date() }}.
+
+When the subscription ends:
+
+- All aliases/domains/directories you have created are kept and continue working.
+- You cannot create new aliases if you exceed the free plan limit, i.e. have more than 5 aliases.
+- As features like "catch-all" or "directory" allow you to create aliases on-the-fly, those aliases cannot be automatically created if you have more than 5 aliases.
+- You cannot add new domain or directory.
+
+You can upgrade today to continue using all these Premium features (and much more coming).
+
+Best,
+SimpleLogin Team.