Commit graph

1748 commits

Author SHA1 Message Date
Son NK
6547d9420f Use "John Wick - john at wick.com" as default sender format 2021-01-26 19:54:59 +01:00
Son NK
4cd49b66c2 use VERP for transactional email: remove SENDER, SENDER_DIR 2021-01-26 09:59:22 +01:00
Son NK
1013e8dd79 Create Bounce, TransactionalEmail models 2021-01-26 09:59:22 +01:00
Son NK
4a91db8e11 rename parse_email_log_id_from_bounce -> parse_id_from_bounce 2021-01-26 09:59:22 +01:00
Son NK
980942a1f9 create Metric model 2021-01-25 18:47:02 +01:00
Son NK
b0b74906a7 add confirm before changing the plan 2021-01-25 10:45:18 +01:00
Son NK
2bcd238250 Add hint for generic subject 2021-01-20 19:17:34 +01:00
Son NK
8e49fc40d4 fix 2021-01-20 13:28:23 +01:00
Son NK
202f28722e make MAX_SPAM_SCORE, MAX_REPLY_PHASE_SPAM_SCORE configurable 2021-01-20 13:27:30 +01:00
Son NK
013a94d1e9 fix user delete profile pic 2021-01-19 10:47:48 +01:00
Son NK
da53b7fa00 Improve should_disable() to take into account last 7 days bounces 2021-01-19 10:45:39 +01:00
Son NK
7b9136d951 take into account user.profile_picture can be None 2021-01-19 09:15:43 +01:00
Son NK
264f41d466 Fix Paddle modal not showed up on mobile 2021-01-18 17:00:58 +01:00
Son
e75ede969a Ctrl-enter submit the form on custom alias page 2021-01-16 19:56:30 +01:00
Son
8a74aee363 black 2021-01-16 10:55:14 +01:00
Son
f9161dba20 Handle "message/rfc822" in replace() 2021-01-16 10:45:50 +01:00
Son NK
fd0ba7030d Add the condition of at least 3 months to referral program 2021-01-15 17:26:05 +01:00
Son NK
4bfe6d1ac9 handle name can be None in get_name_initial() 2021-01-15 11:21:45 +01:00
Son NK
c431abd917 take into account alias.cannot_be_disabled in should_disable 2021-01-13 11:03:30 +01:00
Son NK
79f22857b5 add mailbox admin page 2021-01-12 18:14:35 +01:00
Son NK
67de0e3c5b set user as default admin page 2021-01-12 18:14:21 +01:00
Son NK
d6cc2a4bf3 Add AWS_REGION env var 2021-01-12 09:54:46 +01:00
Son NK
361945f3f8 add cash and monero upgrade in admin 2021-01-11 20:24:33 +01:00
Son NK
0e94c329d1 handle alias too long error 2021-01-11 15:45:41 +01:00
Son NK
13f3deb671 fix 2021-01-11 15:06:56 +01:00
Son NK
c83b146f14 Add BOUNCE_PREFIX, BOUNCE_SUFFIX config 2021-01-11 14:51:29 +01:00
Son NK
45ac548e2b reserve bounce, bounces as directory name 2021-01-11 14:32:48 +01:00
Son NK
0ee0167b8e fix test 2021-01-11 12:31:05 +01:00
Son NK
e9adb3270d use sanitize_email instead of .lower().strip().replace(" ", "") 2021-01-11 12:29:40 +01:00
Son NK
01858ac452 sanitize contact email 2021-01-11 12:27:02 +01:00
Son NK
2293c6d2e3 improve admin 2021-01-11 12:04:37 +01:00
Son NK
cce08adb87 set "" as default name when creating new user 2021-01-11 10:25:37 +01:00
Son NK
435ced66bc make User.name nullable 2021-01-11 10:24:00 +01:00
Son NK
ef7fae32b1 remove the "Hi {name}" from email template 2021-01-11 10:23:34 +01:00
Son NK
4293bba5ab add edu upgrade to User admin page 2021-01-08 18:53:01 +01:00
Son NK
3ac159d073 use text/plain for text email instead of text/text 2021-01-04 15:11:12 +01:00
Son NK
8dbaf3cf56 Add EmailLog.spam_report column 2021-01-04 14:38:32 +01:00
Son NK
b942b44ec8 display bounce during reply phase on alias log page 2021-01-04 14:25:51 +01:00
Son NK
2b4dc3cdcc when a custom domain is default and has random_prefix_generation enabled, use the random_prefix as the first choice 2021-01-02 18:17:53 +01:00
Son NK
3179d70df1 ignore text/csv in replace() 2020-12-31 18:03:42 +01:00
Son NK
a34af98de8 handle "multipart/signed" in add_header() 2020-12-31 15:50:03 +01:00
Son NK
ef2624ccea handle multipart/mixed in add_header 2020-12-31 15:11:46 +01:00
Son NK
33dd6083c7 rename available_suffixes_more_info -> get_available_suffixes 2020-12-31 14:27:04 +01:00
Son NK
95f3db6aa5 remove available_suffixes() 2020-12-31 14:26:07 +01:00
Son NK
5a3b79b4cf replace available_suffixes by available_suffixes_more_info 2020-12-31 14:25:44 +01:00
Son NK
7915a2abb9 Fix available_suffixes_more_info 2020-12-31 14:18:49 +01:00
Son NK
abb3ec1f05 rename 2020-12-31 14:16:32 +01:00
Son NK
4e20ffcc60 update wording: use custom alias to be opposed to random alias 2020-12-31 14:15:25 +01:00
Son NK
75d1b090cd rename default_random_alias_public_domain_id -> default_alias_public_domain_id 2020-12-31 14:14:56 +01:00
Son NK
e0a414212e rename default_random_alias_domain_id -> default_alias_custom_domain_id 2020-12-31 14:06:32 +01:00
Son NK
1647a7a628 update settings wording 2020-12-31 14:00:21 +01:00
Son NK
b9d8f11f2d put the default domain to top 2020-12-31 13:59:03 +01:00
Son NK
66e7aa7242 refactor 2020-12-31 12:50:04 +01:00
Son NK
0585ba97ee use warning level for "Cannot encrypt using the imported key" error 2020-12-31 11:05:11 +01:00
Son NK
74a63db835 ignore "text/directory" in replace() 2020-12-30 09:48:58 +01:00
Son NK
0df4d1a93d add more logging 2020-12-29 12:17:24 +01:00
Son NK
31774f9ea7 set include_sender_in_reverse_alias to False by default 2020-12-28 10:28:05 +01:00
Son NK
be57add431 add list of cryptocurrency that are supported 2020-12-19 17:22:04 +01:00
Son NK
9f9d292754 remove can_use_coinbase column 2020-12-19 16:31:16 +01:00
Son NK
3015cd1dc0 ignore "text/calendar" content type 2020-12-18 16:07:32 +01:00
Son NK
6cec373b6d ignore UnicodeDecodeError in decode_text() 2020-12-18 13:10:33 +01:00
Son NK
fb8a43fd5d use decode_text() in add_header() 2020-12-18 10:44:42 +01:00
Son NK
091ff3ad2c Add decode_text() 2020-12-18 10:43:06 +01:00
Son NK
3a8cdce650 Create should_disable 2020-12-16 18:50:09 +01:00
Son NK
830331d9b3 improve wording 2020-12-14 11:52:35 +01:00
Son NK
b9dba9c2c3 improve wording 2020-12-14 11:48:08 +01:00
Son NK
3dd8ed7840 Create /dashboard/coinbase_checkout, remove extend_subscription route 2020-12-14 11:34:59 +01:00
Son NK
f19a7e1bca Add COINBASE_API_KEY and COINBASE_YEARLY_PRICE config 2020-12-14 11:33:39 +01:00
Son NK
369c9dafce remove duplicated 2020-12-13 19:56:17 +01:00
Son NK
530160567b fix coinbase button not displayed on pricing page 2020-12-13 19:51:00 +01:00
Son NK
1348b58672 only show coinbase option for user who has can_use_coinbase=True 2020-12-13 19:28:46 +01:00
Son NK
1961d2f18e Add User.can_use_coinbase column 2020-12-13 19:28:13 +01:00
Son NK
fbe48b7b3e add extend subscription link on settings page 2020-12-13 19:14:54 +01:00
Son NK
6c21b83975 add coinbase option on pricing page 2020-12-13 19:14:11 +01:00
Son NK
436e31229f Create extend_subscription page 2020-12-13 19:13:26 +01:00
Son NK
0542adb761 Add COINBASE_WEBHOOK_SECRET, COINBASE_CHECKOUT_ID config 2020-12-13 19:11:49 +01:00
Son NK
02c74e6a5a take into account Coinbase in can_upgrade(), is_paid(), _lifetime_or_active_subscription() 2020-12-13 19:08:06 +01:00
Son NK
9329cf04ad Create CoinbaseSubscription model 2020-12-13 19:05:43 +01:00
Son NK
8527fed69e pricing page: improve wording 2020-12-13 17:04:05 +01:00
Son Nguyen Kim
bf139f83b3
Merge pull request #342 from herrboyer/linting
Linting
2020-12-07 17:45:50 +01:00
Son NK
ce3dae2a07 inform user when an alias can't be created when a directory is disabled 2020-12-07 10:55:13 +01:00
Son NK
37a74bc093 refactor: rename 2020-12-07 10:50:42 +01:00
Son NK
4fb7b7bd2c user can change directory disabled 2020-12-07 10:49:40 +01:00
Son NK
05d4ec1c2f Add directory.disabled column 2020-12-07 10:48:43 +01:00
Son NK
a40bbe74fe show include_sender_in_reverse_alias as checked if user hasn't set any value 2020-12-07 10:23:36 +01:00
Renaud Boyer
5d948faf56 black 2020-12-06 22:11:58 +01:00
Renaud Boyer
f2f13958c7 linting 2020-12-06 22:11:22 +01:00
Renaud Boyer
a2f3aeeece linting 2020-12-06 22:10:42 +01:00
Renaud Boyer
2b9cb44cdb linting 2020-12-06 22:10:16 +01:00
Renaud Boyer
c09b6ef675 linting 2020-12-06 22:08:35 +01:00
Renaud Boyer
1c73f07d18 linting 2020-12-06 22:08:05 +01:00
Renaud Boyer
a8d67f94e2 linting 2020-12-06 22:07:18 +01:00
Renaud Boyer
f3303ee6bb linting 2020-12-06 22:06:03 +01:00
Renaud Boyer
4e93e511ec linting 2020-12-06 22:05:13 +01:00
Renaud Boyer
f1fb0ebe1f linting 2020-12-06 22:04:21 +01:00
Renaud Boyer
b7e6270a18 linting 2020-12-06 22:03:47 +01:00
Renaud Boyer
a45b6df78c linting 2020-12-06 22:03:06 +01:00
Renaud Boyer
479a9d1a35 linting 2020-12-06 22:02:18 +01:00
Renaud Boyer
47b1398cad linting 2020-12-06 22:01:43 +01:00
Renaud Boyer
4bf22771af linting 2020-12-06 22:01:38 +01:00
Renaud Boyer
43d9dbc1fc linting 2020-12-06 22:00:01 +01:00
Son NK
b0e39949cb fix embed video on mobile view 2020-12-06 19:39:12 +01:00
Son NK
fec281b84f Add include_sender_in_reverse_alias on Setting page 2020-12-06 19:38:37 +01:00
Son NK
ce2d68a64d take into account include_sender_in_reverse_alias when creating reverse-alias 2020-12-06 19:37:20 +01:00
Son NK
eab09d8c32 Add User.include_sender_in_reverse_alias column. Null for existing user, False for new user. 2020-12-06 19:36:39 +01:00
Renaud Boyer
7bac9e82b9 linting 2020-12-06 18:04:29 +01:00
Renaud Boyer
7e1a474875 linting 2020-12-06 18:02:47 +01:00
Renaud Boyer
1ced8f76b7 linting 2020-12-06 18:02:23 +01:00
Renaud Boyer
4bcc0d107f linting 2020-12-06 18:01:55 +01:00
Renaud Boyer
fad64ff064 linting 2020-12-06 18:00:41 +01:00
Renaud Boyer
fefbaeb143 linting 2020-12-06 18:00:06 +01:00
Renaud Boyer
1e5185b328 linting 2020-12-06 17:59:07 +01:00
Renaud Boyer
bcdb4c08d9 linting 2020-12-06 17:58:56 +01:00
Renaud Boyer
a46a03be85 linting 2020-12-06 17:57:10 +01:00
Son NK
83df119178 do not replace for "application/*" 2020-12-04 11:33:49 +01:00
Son NK
59daaa3164 ignore multipart/signed when replacing message 2020-12-03 17:52:11 +01:00
Son NK
255a7e085a add index on user_id, mailbox_id, ... if possible 2020-12-02 17:33:03 +01:00
Son NK
81f9f9f41b optimize get_stats(): use session.query instead of EmailLog.query 2020-12-02 17:30:56 +01:00
Son NK
450b101e6e add /live endpoint 2020-12-02 16:34:28 +01:00
Son NK
66abbf2614 make sure to remove \n from alias name 2020-12-02 12:25:23 +01:00
Son NK
8551dade7c hide replace reverse alias option 2020-12-01 18:36:24 +01:00
Son NK
cd680bcd7f ignore content type like image/, video/, audio/ in replace() 2020-12-01 18:34:38 +01:00
Son NK
2107bd4b08 remove Black Friday promo 2020-12-01 10:07:53 +01:00
Son NK
652bb6a369 take into account multipart/mixed in replace() 2020-11-30 19:45:45 +01:00
Son NK
692c81ac2a add warning about Gmail issue if reverse-alias replacement option 2020-11-30 19:16:10 +01:00
Son NK
cefa68d392 Create replace() in email_utils 2020-11-30 15:15:13 +01:00
Son NK
0b95ca33b8 use no encoding for 8bit and binary 2020-11-30 10:49:04 +01:00
Son NK
f804332c2d refactor: create EmailEncoding enum 2020-11-30 10:48:16 +01:00
Son NK
86636b2eb7 fix delete user profile picture 2020-11-27 16:36:21 +01:00
Son NK
d61f45ea86 use 7bit as default encoding 2020-11-26 17:22:17 +01:00
Son NK
1241838b26 take into account message encoding in add_header() 2020-11-26 17:03:50 +01:00
Son NK
e2a7061429 add get_encoding() and encode_text() 2020-11-26 17:01:05 +01:00
Son NK
d35faf7154 comment out paddle issue annoucement 2020-11-26 10:39:44 +01:00
Son NK
adfbfe8026 Use load_public_key_and_check when adding new PGP key 2020-11-26 10:27:32 +01:00
Son NK
5b9eb8686a add id to mailbox repr 2020-11-26 10:08:09 +01:00
Son NK
03383eb181 display Paddle issue as announcement on pricing page 2020-11-25 17:43:02 +01:00
Son NK
ca625e60d5 fix add pgp 2020-11-25 17:29:54 +01:00
Son NK
bb8c9451c4 catch all exception in load_public_key() 2020-11-25 14:31:14 +01:00
Son NK
4381314f6f preload email_log.mailbox 2020-11-24 21:51:25 +01:00
Son NK
297857a140 Remove _MAILBOX_ID_HEADER 2020-11-24 16:50:55 +01:00
Son NK
6b07be5677 add email_log.mailbox_id column 2020-11-24 16:35:16 +01:00
Son NK
bcb2657de3 add remove button on custom domain name 2020-11-24 12:02:47 +01:00
Son NK
3d75ef974a user can turn on/off pgp on mailbox that has valid pgp_finger_print 2020-11-24 11:22:41 +01:00
Son NK
cbbb472d06 refactor 2020-11-24 11:22:41 +01:00
Son NK
c707342695 Use pgp_enabled() instead of pgp_finger_print 2020-11-24 11:22:41 +01:00
Son NK
5997e5b5b5 add Mailbox.disable_pgp column 2020-11-24 11:22:41 +01:00
Son NK
33e6342a9c use warning log when user uses premium domain 2020-11-23 10:43:50 +01:00
Son NK
836b602316 fix 2020-11-22 13:50:57 +01:00
Son NK
bcdf522174 create normalize_reply_email(): handle case where reply email contains space, quote, etc 2020-11-22 13:07:09 +01:00
Son NK
a1d5b01143 make sure mailbox email is valid 2020-11-22 12:18:31 +01:00
Son NK
fbf242f6c6 handle new name can be null 2020-11-22 12:10:19 +01:00
Son NK
f069d2f083 use getaddresses to parse multiple address from To, CC header. Remove get_addrs_from_header() 2020-11-21 19:15:02 +01:00
Son NK
8aed5ced3f make sure a custom domain name does not contain a linebreak 2020-11-20 18:40:07 +01:00
Son NK
78ddf16c87 make sure alias name does not contain a linebreak 2020-11-20 18:39:23 +01:00
Son NK
c25a5b50f6 make sure reply_email only contain lowercase 2020-11-20 10:03:40 +01:00
Son NK
75c3fa1c11 make sure reply-email only uses ascii-encoded char 2020-11-18 15:36:39 +01:00
Son NK
ed22701cbe fix duplicate pinned alias in get_alias_infos_with_pagination_v3 2020-11-18 12:08:36 +01:00
Son NK
9ca129cb97 use warning level for cannot decode error 2020-11-18 11:43:25 +01:00
Son NK
5b9dc88c67 make sure alias prefix cannot be more than 40 chars 2020-11-18 10:38:35 +01:00
Son NK
0224e5f8a6 Fix SpamAssassin: init all class fields 2020-11-18 10:28:32 +01:00
Son NK
319078fceb use contact email when generating reply-email 2020-11-18 10:24:39 +01:00
Son NK
0963049d1f use utf-8 when unknown charset in parseaddr_unicode() 2020-11-18 10:03:58 +01:00
Son NK
28d42a7a22 Use get_header_unicode() in get_addrs_from_header() 2020-11-18 10:03:00 +01:00
Son NK
be510ea1d7 use utf-8 if unknown charset in get_header_unicode() 2020-11-18 10:02:10 +01:00
Son NK
6ed6218895 black 2020-11-17 09:27:45 +01:00
Son NK
145fc9c67c Add reverse_alias_address to GET /api/aliases/:alias_id/activities 2020-11-17 09:27:30 +01:00
Son NK
aada12f17e return reverse_alias_address in POST /api/aliases/:alias_id/contacts and GET /api/aliases/:alias_id/contacts 2020-11-16 19:39:00 +01:00
Son NK
9154b4656d refactor: create is_reply_email() 2020-11-16 19:22:19 +01:00
Son NK
3d153f5203 make sure user can't choose "ra" as directory name 2020-11-16 19:18:33 +01:00
Son NK
1926408a13 Add dns_utils.get_ns() 2020-11-16 19:16:06 +01:00
Son NK
75ba1669e0 Create generate_reply_email() and refactor 2020-11-16 19:15:09 +01:00
Son NK
15a6d9630a Handle sender_format in PATCH /api/setting 2020-11-15 19:43:37 +01:00
Son NK
c794e73abd Add EnumE.has_name(), EnumE.get_value() 2020-11-15 19:43:01 +01:00
Son NK
f0f81930bc Return "sender_format" in GET /api/setting 2020-11-15 19:35:07 +01:00
Son NK
d8c9078708 Add EnumE.get_name() 2020-11-15 19:34:00 +01:00
Son NK
aee917a3ef Add GET /api/custom_domains/:custom_domain_id/trash 2020-11-15 19:24:54 +01:00
Son NK
de495b9afe return nb_alias in GET /api/custom_domains 2020-11-15 19:13:00 +01:00
Son NK
9d24b1b88a GET /api/custom_domains 2020-11-15 19:09:25 +01:00
Son NK
f6568aca6a Return pinned in GET /api/aliases/:alias_id, GET /api/v2/aliases 2020-11-15 19:01:11 +01:00
Son NK
f500a495b7 User can pin an alias 2020-11-15 18:46:43 +01:00
Son NK
ae05c164c9 Support pinned in PATCH /api/aliases/:alias_id 2020-11-15 18:46:27 +01:00
Son NK
6c7018dd33 Take into account pinned alias in get_alias_infos_with_pagination_v3 2020-11-15 18:42:29 +01:00
Son NK
abf50e302b Add Alias.pinned column 2020-11-15 18:38:07 +01:00
Son NK
08902bf784 small style refactor 2020-11-15 18:31:10 +01:00
Son NK
9cfb6d412a Add /api/v5/alias/options 2020-11-14 16:45:22 +01:00
Son NK
f452c79aec Add /v2/setting/domains 2020-11-14 16:37:36 +01:00
Son NK
f62c568dd0 Add Contact.invalid_email column 2020-11-14 15:54:06 +01:00
Son NK
3489e41fdb Add NOREPLY setting 2020-11-14 15:53:20 +01:00
Son NK
2c46d1db8e Add PGP_SIGNER and display if it's set 2020-11-14 13:00:14 +01:00
Son NK
a072d6c0cd only report the paddle error if it's not 147 2020-11-14 12:55:53 +01:00
Son NK
f16676e921 email.message_from_string can also throw LookupError when non-existent charset is set 2020-11-13 18:08:56 +01:00
Son NK
b4e5e3eecb user can choose a referral code 2020-11-13 16:18:09 +01:00
Son NK
25de8001e2 fix circular import 2020-11-12 17:56:03 +01:00
Son NK
1c061ceb59 Schedule domain deletion instead of deleting it immediately 2020-11-12 17:41:47 +01:00
Son NK
ec4d879836 change promotion to 1st year only 2020-11-10 22:37:58 +01:00
Son NK
5570300699 use 2 random words when creating random alias 2020-11-10 18:52:31 +01:00
Son NK
4e16eb7403 fix 2020-11-10 17:42:23 +01:00
Son NK
4666d21f63 email.message_from_string can also throw KeyError when 'content-transfer-encoding' is absent 2020-11-10 17:26:24 +01:00
Son NK
632a5bbbc8 handle UnicodeEncodeError in copy() and to_bytes() 2020-11-10 16:02:19 +01:00
Son NK
c3f73b25b2 decode the subject 2020-11-09 21:16:50 +01:00