Skip to content

Commit 4c5b264

Browse files
make login more robust and improve mail handling
1 parent 5bd907a commit 4c5b264

File tree

3 files changed

+49
-45
lines changed

3 files changed

+49
-45
lines changed

MailGrabber.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,28 +58,28 @@ internal List<string> FindUrl(string sender, string regexPattern)
5858

5959
}
6060

61-
public void Purge(string sender)
61+
public void Purge(string sender, string subject)
6262
{
63-
using (var client = new ImapClient())
64-
{
65-
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
66-
client.Connect(_host, 993, true);
67-
client.Authenticate(_user, _password);
68-
69-
var inbox = client.Inbox;
70-
inbox.Open(MailKit.FolderAccess.ReadWrite);
71-
var purgeFolder = client.GetFolder("notion-backup");
63+
using var client = new ImapClient();
64+
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
65+
client.Connect(_host, 993, true);
66+
client.Authenticate(_user, _password);
67+
68+
var inbox = client.Inbox;
69+
inbox.Open(MailKit.FolderAccess.ReadWrite);
70+
var purgeFolder = client.GetFolder("notion-backup");
7271

73-
for (int i = 0; i < inbox.Count; i++)
74-
{
75-
MimeMessage? message = inbox.GetMessage(i);
72+
for (int i = 0; i < inbox.Count; i++)
73+
{
74+
MimeMessage? message = inbox.GetMessage(i);
7675

77-
if ((message.From[0] as MailboxAddress)?.Address != sender)
78-
continue;
76+
if ((message.From[0] as MailboxAddress)?.Address != sender)
77+
continue;
7978

80-
inbox.MoveTo(i, purgeFolder);
81-
}
79+
if (!message.Subject.Contains(subject))
80+
continue;
8281

82+
inbox.MoveTo(i, purgeFolder);
8383
}
8484
}
8585
}

NotionWebsitePuppeteer.cs

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,34 @@ public NotionWebsitePuppeteer(string seleniumHost, string notionUsername, string
2525

2626
private void Login()
2727
{
28+
void TryLoginWithLink()
29+
{
30+
Console.WriteLine("Trying login-code login...");
31+
// Query mail for login code
32+
33+
MailGrabber mg = new MailGrabber(MailHost, MailUser, MailPassword);
34+
string loginUrl = "";
35+
bool foundUrl = false;
36+
37+
while (!foundUrl)
38+
{
39+
Thread.Sleep(2000);
40+
Console.WriteLine("Waiting for login code email...");
41+
List<string> loginUrls = mg.FindUrl("[email protected]", "https://www\\.notion\\.so/loginwithemail.*?(?=\")");
42+
43+
if (loginUrls.Count == 0) continue;
44+
45+
loginUrl = loginUrls.First();
46+
foundUrl = true;
47+
mg.Purge("[email protected]","login code");
48+
49+
}
50+
51+
Console.WriteLine("Logging in using URL...");
52+
_driver.Navigate().GoToUrl(loginUrl);
53+
Thread.Sleep(5000);
54+
}
55+
2856
bool FirstLoginStep()
2957
{
3058
bool needsLoginCode = false;
@@ -93,32 +121,7 @@ bool FirstLoginStep()
93121

94122
if (needsLoginCode)
95123
{
96-
Console.WriteLine("Trying login-code login...");
97-
// Query mail for login code
98-
99-
MailGrabber mg = new MailGrabber(MailHost, MailUser, MailPassword);
100-
string loginUrl = "";
101-
bool foundUrl = false;
102-
103-
while (!foundUrl)
104-
{
105-
Thread.Sleep(2000);
106-
Console.WriteLine("Waiting for login code email...");
107-
List<string> loginUrls = mg.FindUrl("[email protected]", "https://www\\.notion\\.so/loginwithemail.*?(?=\")");
108-
109-
if (loginUrls.Count == 0) continue;
110-
111-
loginUrl = loginUrls.First();
112-
foundUrl = true;
113-
mg.Purge("[email protected]");
114-
115-
}
116-
117-
Console.WriteLine("Logging in using URL...");
118-
_driver.Navigate().GoToUrl(loginUrl);
119-
Thread.Sleep(5000);
120-
121-
124+
TryLoginWithLink();
122125
}
123126
else
124127
{
@@ -135,6 +138,7 @@ bool FirstLoginStep()
135138
catch
136139
{
137140
Console.WriteLine("bad login");
141+
TryLoginWithLink();
138142
}
139143

140144
}

Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ async Task<Cookie> FileCookie()
135135
}
136136

137137
// Purge Emails
138-
mail.Purge("[email protected]");
139-
mail.Purge("[email protected]");
138+
mail.Purge("[email protected]","workspace export");
139+
mail.Purge("[email protected]", "workspace export");
140140

141141

142142
}

0 commit comments

Comments
 (0)