Skip to content

Commit 9a93e63

Browse files
committed
fix: do not Base64Encode
fix: set sender address
1 parent bd352e9 commit 9a93e63

File tree

3 files changed

+16
-34
lines changed

3 files changed

+16
-34
lines changed

src/main/oauth2tokenprovider.pas

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ function CreateIdHTTPwithSSL12: TIdHTTP;
1616
IOHandler: TIdSSLIOHandlerSocketOpenSSL;
1717
begin
1818
Result := TIdHTTP.Create;
19-
2019
IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(Result);
2120
IOHandler.SSLOptions.SSLVersions := [sslvTLSv1_2];
21+
IOHandler.SSLOptions.Mode := sslmClient;
2222
Result.IOHandler := IOHandler;
2323
end;
2424

@@ -53,24 +53,19 @@ function SendPost: string;
5353

5454
function FetchToken: string;
5555
var
56-
jsonData: TJSONData;
57-
jsonObject: TJSONObject;
58-
jsonString: string;
59-
PostResponse: string;
60-
AccessToken: string;
56+
JsonString: string;
57+
JsonData: TJSONData;
58+
JsonObject: TJSONObject;
6159
begin
62-
jsonString := SendPost;
63-
jsonData := GetJSON(jsonString);
64-
65-
if jsonData.JSONType = jtObject then
60+
JsonString := SendPost;
61+
JsonData := GetJSON(JsonString);
62+
if JsonData.JSONType = jtObject then
6663
begin
67-
jsonObject := TJSONObject(jsonData);
68-
AccessToken := jsonObject.Get('access_token', '');
64+
JsonObject := TJSONObject(JsonData);
65+
Result := JsonObject.Get('access_token', '');
6966
end
7067
else
71-
assert(False, 'Invalid JSON object');
72-
73-
Result := AccessToken;
68+
Assert(False, 'Invalid JSON object');
7469
end;
7570

7671
end.

src/main/smtpoauth2client.pas

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,28 @@ procedure SendSMTP(const OAuth2Token: string);
77
implementation
88

99
uses
10-
IdSMTP, IdSSLOpenSSL, IdMessage, IdGlobal, IdEMailAddress,
11-
IdUserPassProvider, IdSASLCollection, IdSASLOAuth,
12-
IdExplicitTLSClientServerBase, IdCoder, IdCoderMIME,
10+
IdSMTP, IdSSLOpenSSL, IdMessage, IdGlobal, IdEMailAddress, IdSASLOAuth,
11+
IdUserPassProvider, IdSASLCollection, IdExplicitTLSClientServerBase,
1312
Classes, SysUtils;
1413

15-
function EncodeBase64(const Input: string): string;
16-
var
17-
Encoder: TIdEncoderMIME;
18-
begin
19-
Encoder := TIdEncoderMIME.Create(nil);
20-
try
21-
Result := Encoder.EncodeString(Input);
22-
finally
23-
Encoder.Free;
24-
end;
25-
end;
26-
2714
procedure SendSMTP(const OAuth2Token: string);
2815
var
29-
Base64EncodedToken: string;
3016
IdSMTP: TIdSMTP;
3117
IdMessage: TIdMessage;
3218
AddressItem: TIdEMailAddressItem;
3319
Auth: TIdSASLListEntry;
3420
IOHandler: TidSSLIOHandlerSocketOpenSSL;
3521
UserPass: TIdUserPassProvider;
3622
begin
37-
Base64EncodedToken := EncodeBase64(OAuth2Token);
38-
3923
IdSMTP := TIdSMTP.Create;
4024
try
4125
IdSMTP.Host := 'smtp.office365.com';
4226
IdSMTP.Port := 587;
4327

4428
IdMessage := TIdMessage.Create(IdSMTP);
4529
try
30+
IdMessage.From.Address := 'user@example.com';
31+
4632
AddressItem := IdMessage.Recipients.Add;
4733
AddressItem.Address := 'recipient@example.com';
4834
AddressItem.Name := 'Recipient';
@@ -56,7 +42,7 @@ procedure SendSMTP(const OAuth2Token: string);
5642

5743
UserPass := TIdUserPassProvider.Create(IdSMTP);
5844
UserPass.Username := 'user@example.com';
59-
UserPass.Password := Base64EncodedToken;
45+
UserPass.Password := OAuth2Token;
6046

6147
Auth := IdSMTP.SASLMechanisms.Add;
6248
Auth.SASL := TIdSASLXOAuth2.Create(IdSMTP);

src/test/FpcTests.lpi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
<Unit>
4646
<Filename Value="..\main\oauth2tokenprovider.pas"/>
4747
<IsPartOfProject Value="True"/>
48+
<UnitName Value="OAuth2TokenProvider"/>
4849
</Unit>
4950
<Unit>
5051
<Filename Value="..\main\smtpoauth2client.pas"/>

0 commit comments

Comments
 (0)