Compare commits
33 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
5f37804f2b | |
|
|
8cfccf1eb0 | |
|
|
b920ea80c8 | |
|
|
d794a4db52 | |
|
|
dee4a132f6 | |
|
|
eed07ff89c | |
|
|
4526a8f2cb | |
|
|
6ff59511b2 | |
|
|
bbaad3c352 | |
|
|
e55f7c78aa | |
|
|
95bab29a63 | |
|
|
b4950a9060 | |
|
|
b7557c5a20 | |
|
|
9dc2c7ecac | |
|
|
48f49e9b3a | |
|
|
e3d821e219 | |
|
|
6a70c6d2ac | |
|
|
9adf5e57cf | |
|
|
dc0b0a64e2 | |
|
|
1e01058c7c | |
|
|
5c557ea713 | |
|
|
8b226294a2 | |
|
|
f6fc366dd4 | |
|
|
1139fef0ab | |
|
|
2728e8c4a2 | |
|
|
fc95242c94 | |
|
|
19aa5f82fb | |
|
|
f0f7c1d3f0 | |
|
|
a5927b0485 | |
|
|
c6d88f6abe | |
|
|
0449e7bdaa | |
|
|
10bc441e1e | |
|
|
6f3bf1f6a4 |
16
bank.go
16
bank.go
|
|
@ -4,18 +4,30 @@ type Bank int
|
|||
|
||||
const (
|
||||
Chase Bank = iota + 1
|
||||
Citi Bank = iota + 1
|
||||
UCCU Bank = iota + 1
|
||||
Citi
|
||||
UCCU
|
||||
BankOfAmerica
|
||||
Fidelity
|
||||
Amex
|
||||
Plumas
|
||||
)
|
||||
|
||||
func (b Bank) String() string {
|
||||
switch b {
|
||||
case Fidelity:
|
||||
return "Fidelity"
|
||||
case BankOfAmerica:
|
||||
return "BankOfAmerica"
|
||||
case Chase:
|
||||
return "Chase"
|
||||
case Citi:
|
||||
return "Citi"
|
||||
case UCCU:
|
||||
return "UCCU"
|
||||
case Amex:
|
||||
return "AmericanExpress"
|
||||
case Plumas:
|
||||
return "Plumas"
|
||||
}
|
||||
return "?"
|
||||
}
|
||||
|
|
|
|||
111
config.go
111
config.go
|
|
@ -1,35 +1,32 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"local/args"
|
||||
"local/oauth2"
|
||||
"local/storage"
|
||||
"net/http"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"gitea.inhome.blapointe.com/local/args"
|
||||
"gitea.inhome.blapointe.com/local/storage"
|
||||
)
|
||||
|
||||
type Uploader int
|
||||
|
||||
const (
|
||||
UploaderTodo = Uploader(iota)
|
||||
DeprecatedUploaderTodo = Uploader(iota)
|
||||
UploaderLedger
|
||||
UploaderPTTodo
|
||||
)
|
||||
|
||||
var uploaders = map[string]Uploader{
|
||||
"todo": UploaderTodo,
|
||||
"ledger": UploaderLedger,
|
||||
"pttodo": UploaderPTTodo,
|
||||
}
|
||||
|
||||
type Config struct {
|
||||
EmailUser string
|
||||
EmailPass string
|
||||
EmailIMAP string
|
||||
EmailLimit int
|
||||
TodoAddr string
|
||||
TodoToken string
|
||||
TodoList string
|
||||
TodoTag string
|
||||
Uploader Uploader
|
||||
Storage storage.DB
|
||||
|
|
@ -46,16 +43,17 @@ func NewConfig() Config {
|
|||
as.Append(args.STRING, "emailuser", "email username", "breellocaldev@gmail.com")
|
||||
as.Append(args.STRING, "emailpass", "email password", "diblloewfncwssof")
|
||||
as.Append(args.STRING, "emailimap", "email imap", "imap.gmail.com:993")
|
||||
as.Append(args.INT, "emaillimit", "email limit", 0)
|
||||
|
||||
as.Append(args.STRING, "uploader", "todo, ledger", "todo")
|
||||
as.Append(args.STRING, "uploader", "ledger|pttodo", "ledger")
|
||||
|
||||
as.Append(args.STRING, "todoaddr", "todo addr", "https://todo-server.remote.blapointe.com")
|
||||
as.Append(args.STRING, "todoaddr", "todo addr", "/tmp/email-xactions-to-todo.dat.txt")
|
||||
as.Append(args.STRING, "todopass", "todo pass", "gJtEXbbLHLf54yS9EdujtVN2n6Y")
|
||||
as.Append(args.STRING, "todotoken", "todo token", "")
|
||||
as.Append(args.STRING, "todolist", "todo list", "")
|
||||
as.Append(args.STRING, "todotag", "todo tag", "expense")
|
||||
|
||||
as.Append(args.STRING, "banks", "uccu,citi,chase", "uccu,citi,chase")
|
||||
as.Append(args.STRING, "banks", "uccu,citi,chase,bankofamerica,fidelity,americanexpress", "uccu,citi,chase,bankofamerica,fidelity,americanexpress")
|
||||
as.Append(args.STRING, "accounts", "regex to include filter accounts", ".*")
|
||||
as.Append(args.STRING, "not-accounts", "regex to exclude filter accounts", "zzzzzz")
|
||||
|
||||
|
|
@ -84,6 +82,7 @@ func NewConfig() Config {
|
|||
EmailUser: as.GetString("emailuser"),
|
||||
EmailPass: as.GetString("emailpass"),
|
||||
EmailIMAP: as.GetString("emailimap"),
|
||||
EmailLimit: as.GetInt("emaillimit"),
|
||||
TodoAddr: as.GetString("todoaddr"),
|
||||
TodoTag: as.GetString("todotag"),
|
||||
AccountsPattern: as.GetString("accounts"),
|
||||
|
|
@ -91,88 +90,24 @@ func NewConfig() Config {
|
|||
Storage: storage,
|
||||
Uploader: ul,
|
||||
Banks: map[Bank]bool{
|
||||
Chase: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Chase.String())),
|
||||
Citi: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Citi.String())),
|
||||
UCCU: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(UCCU.String())),
|
||||
BankOfAmerica: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(BankOfAmerica.String())),
|
||||
Chase: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Chase.String())),
|
||||
Citi: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Citi.String())),
|
||||
UCCU: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(UCCU.String())),
|
||||
Fidelity: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Fidelity.String())),
|
||||
Amex: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Amex.String())),
|
||||
Plumas: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Plumas.String())),
|
||||
},
|
||||
}
|
||||
|
||||
if config.Uploader == UploaderTodo {
|
||||
token := as.GetString("todotoken")
|
||||
if len(token) == 0 {
|
||||
token = getToken(as)
|
||||
}
|
||||
|
||||
list := as.GetString("todolist")
|
||||
if len(list) == 0 {
|
||||
list = getList(as, token)
|
||||
}
|
||||
config.TodoToken = token
|
||||
config.TodoList = list
|
||||
}
|
||||
log.Printf("config: %+v", config)
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
func getToken(as *args.ArgSet) string {
|
||||
c := &http.Client{CheckRedirect: func(r *http.Request, via []*http.Request) error {
|
||||
return http.ErrUseLastResponse
|
||||
}}
|
||||
body := "username=" + as.GetString("todopass")
|
||||
name := strings.Split(as.GetString("todoaddr"), ".")[0]
|
||||
name = strings.TrimPrefix(name, "http://")
|
||||
name = strings.TrimPrefix(name, "https://")
|
||||
req, err := http.NewRequest("POST", as.GetString("authaddr")+"/authorize/"+name+"?"+oauth2.REDIRECT+"=127.0.0.1", strings.NewReader(body))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
resp, err := c.Do(req)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode > 399 {
|
||||
panic("bad status getting token: " + resp.Status)
|
||||
}
|
||||
cookie := resp.Header.Get("Set-Cookie")
|
||||
token := cookie[strings.Index(cookie, "=")+1:]
|
||||
token = strings.Split(token, "; ")[0]
|
||||
if len(token) == 0 {
|
||||
panic(fmt.Sprintf("no token found: (%v) %v", resp.StatusCode, resp.Header))
|
||||
}
|
||||
return token
|
||||
panic("DEAD")
|
||||
}
|
||||
|
||||
func getList(as *args.ArgSet, token string) string {
|
||||
req, err := http.NewRequest("GET", as.GetString("todoaddr")+"/ajax.php?loadLists", nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
req.Header.Set("Cookie", oauth2.COOKIE+"="+token)
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
var r struct {
|
||||
List []struct {
|
||||
ID string `json:"id"`
|
||||
} `json:"list"`
|
||||
}
|
||||
b, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
panic(fmt.Errorf("%v: %s", err, b))
|
||||
}
|
||||
if len(r.List) == 0 {
|
||||
panic("no lists found")
|
||||
}
|
||||
list := r.List[0].ID
|
||||
if len(list) == 0 {
|
||||
panic("empty list found")
|
||||
}
|
||||
return list
|
||||
panic("DEAD")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
module gitea.inhome.blapointe.com/local/email-xactions-to-todo
|
||||
|
||||
go 1.23.0
|
||||
|
||||
require (
|
||||
gitea.inhome.blapointe.com/local-sandbox/contact v0.0.2-0.20231109150121-14036702ee2a
|
||||
gitea.inhome.blapointe.com/local/args v0.0.0-20231109145953-eb2e1c1b8d56
|
||||
gitea.inhome.blapointe.com/local/storage v0.0.0-20231109151605-736d446d407d
|
||||
github.com/google/uuid v1.3.0
|
||||
)
|
||||
|
||||
require (
|
||||
cloud.google.com/go v0.33.1 // indirect
|
||||
gitea.inhome.blapointe.com/local/logb v0.0.0-20231109150430-1221d87a6dbc // indirect
|
||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619 // indirect
|
||||
github.com/abbot/go-http-auth v0.4.0 // indirect
|
||||
github.com/aws/aws-sdk-go v1.15.81 // indirect
|
||||
github.com/boltdb/bolt v1.3.1 // indirect
|
||||
github.com/bytbox/go-pop3 v0.0.0-20120201222208-3046caf0763e // indirect
|
||||
github.com/emersion/go-imap v1.2.0 // indirect
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 // indirect
|
||||
github.com/go-stack/stack v1.8.0 // indirect
|
||||
github.com/golang/protobuf v1.2.0 // indirect
|
||||
github.com/golang/snappy v0.0.1 // indirect
|
||||
github.com/gomodule/redigo v1.8.5 // indirect
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect
|
||||
github.com/json-iterator/go v1.1.9 // indirect
|
||||
github.com/klauspost/compress v1.9.5 // indirect
|
||||
github.com/klauspost/cpuid v1.2.3 // indirect
|
||||
github.com/minio/md5-simd v1.1.0 // indirect
|
||||
github.com/minio/minio-go/v6 v6.0.57 // indirect
|
||||
github.com/minio/sha256-simd v0.1.1 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect
|
||||
github.com/ncw/rclone v1.46.0 // indirect
|
||||
github.com/ncw/swift v1.0.44 // indirect
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46 // indirect
|
||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c // indirect
|
||||
github.com/syndtr/goleveldb v1.0.0 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
github.com/xdg-go/scram v1.0.2 // indirect
|
||||
github.com/xdg-go/stringprep v1.0.2 // indirect
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
|
||||
go.mongodb.org/mongo-driver v1.7.2 // indirect
|
||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 // indirect
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 // indirect
|
||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba // indirect
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
|
||||
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect
|
||||
golang.org/x/text v0.3.7 // indirect
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c // indirect
|
||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a // indirect
|
||||
google.golang.org/appengine v1.3.0 // indirect
|
||||
gopkg.in/ini.v1 v1.42.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
)
|
||||
|
|
@ -0,0 +1,272 @@
|
|||
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
|
||||
cloud.google.com/go v0.33.1 h1:fmJQWZ1w9PGkHR1YL/P7HloDvqlmKQ4Vpb7PC2e+aCk=
|
||||
cloud.google.com/go v0.33.1/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
gitea.inhome.blapointe.com/local-sandbox/contact v0.0.2-0.20231109150121-14036702ee2a h1:vDt7kgsUwsI6fq7ObPUuUQ2CiIts3RaEsvcuwruspEY=
|
||||
gitea.inhome.blapointe.com/local-sandbox/contact v0.0.2-0.20231109150121-14036702ee2a/go.mod h1:3LBm8MXwR5D5Z8gwp5p39KmabJR/F7cxBSZwVHWTfQQ=
|
||||
gitea.inhome.blapointe.com/local/args v0.0.0-20231109145953-eb2e1c1b8d56 h1:zTGGZ77KLFagqUvDSgTOnm0qF+iSLwQWiEtGjb2jjlY=
|
||||
gitea.inhome.blapointe.com/local/args v0.0.0-20231109145953-eb2e1c1b8d56/go.mod h1:SqCOE3bE3wvrztVIQGHuyxHKfDjRKU9EWhBdkmkiwyc=
|
||||
gitea.inhome.blapointe.com/local/logb v0.0.0-20231109150430-1221d87a6dbc h1:u3akQkq12V8xWXlcDgjZxIK6hqo6f1eHd9KOxAKMoKc=
|
||||
gitea.inhome.blapointe.com/local/logb v0.0.0-20231109150430-1221d87a6dbc/go.mod h1:KwilawX4UgD4HxSJAVFEzkuckrnHeQrd49KwUX6GpYU=
|
||||
gitea.inhome.blapointe.com/local/storage v0.0.0-20231109151605-736d446d407d h1:SQq4hWImnvtrRfpPgOW4go+sBjMluuhRL/43b8L0yB4=
|
||||
gitea.inhome.blapointe.com/local/storage v0.0.0-20231109151605-736d446d407d/go.mod h1:TRK5z/XTT6jws++Q21Y8DQot+5vZGTNeHf+RjuY8aQk=
|
||||
github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg=
|
||||
github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y=
|
||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619 h1:6X8iB881g299aNEv6KXrcjL31iLOH7yA6NXoQX+MbDg=
|
||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
|
||||
github.com/a8m/tree v0.0.0-20180321023834-3cf936ce15d6/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg=
|
||||
github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=
|
||||
github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=
|
||||
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5/go.mod h1:DGqLjaZ3ziKKNRt+U5Q9PLWJ52Q/4rxfaaH/b3QYKaE=
|
||||
github.com/aws/aws-sdk-go v1.15.81 h1:va7uoFaV9uKAtZ6BTmp1u7paoMsizYRRLvRuoC07nQ8=
|
||||
github.com/aws/aws-sdk-go v1.15.81/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
|
||||
github.com/billziss-gh/cgofuse v1.1.0/go.mod h1:LJjoaUojlVjgo5GQoEJTcJNqZJeRU0nCR84CyxKt2YM=
|
||||
github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
|
||||
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||
github.com/bytbox/go-pop3 v0.0.0-20120201222208-3046caf0763e h1:mQTN05gz0rDZSABqKMzAPMb5ATWcvvdMljRzEh0LjBo=
|
||||
github.com/bytbox/go-pop3 v0.0.0-20120201222208-3046caf0763e/go.mod h1:alXX+s7a4cKaIprgjeEboqi4Tm7XR/HXEwUTxUV/ywU=
|
||||
github.com/coreos/bbolt v0.0.0-20180318001526-af9db2027c98/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/cpuguy83/go-md2man v1.0.8/go.mod h1:N6JayAiVKtlHSnuTCeuLSQVs75hb8q+dYQLjr7cDsKY=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/djherbis/times v1.1.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8=
|
||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible/go.mod h1:lr+LhMM3F6Y3lW1T9j2U5l7QeuWm87N9+PPXo3yH4qY=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/emersion/go-imap v1.2.0 h1:lyUQ3+EVM21/qbWE/4Ya5UG9r5+usDxlg4yfp3TgHFA=
|
||||
github.com/emersion/go-imap v1.2.0/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
|
||||
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ=
|
||||
github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ=
|
||||
github.com/emersion/go-textwrapper v0.0.0-20200911093747-65d896831594/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
|
||||
github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
|
||||
github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
|
||||
github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
|
||||
github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
|
||||
github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
|
||||
github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
|
||||
github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
|
||||
github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
|
||||
github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
|
||||
github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
|
||||
github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
|
||||
github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
|
||||
github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
|
||||
github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
|
||||
github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
|
||||
github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
|
||||
github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
|
||||
github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
|
||||
github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
|
||||
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9/go.mod h1:GpOj6zuVBG3Inr9qjEnuVTgBlk2lZ1S9DcoFiXWyKss=
|
||||
github.com/goftp/server v0.0.0-20190111142836-88de73f463af/go.mod h1:k/SS6VWkxY7dHPhoMQ8IdRu8L4lQtmGbhyXGg+vCnXE=
|
||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc=
|
||||
github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0=
|
||||
github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
|
||||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/jlaffaye/ftp v0.0.0-20181101112434-47f21d10f0ee/go.mod h1:lli8NYPQOFy3O++YmYbqVgOcQ1JPCwdOy+5zSjKJ9qY=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
|
||||
github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
|
||||
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
|
||||
github.com/klauspost/compress v1.9.5 h1:U+CaK85mrNNb4k8BNOfgJtJ/gr6kswUCFj6miSzVC6M=
|
||||
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/cpuid v1.2.3 h1:CCtW0xUnWGVINKvE/WWOYKdsPV6mawAtvQuSl8guwQs=
|
||||
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
|
||||
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
|
||||
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||
github.com/minio/md5-simd v1.1.0 h1:QPfiOqlZH+Cj9teu0t9b1nTBfPbyTl16Of5MeuShdK4=
|
||||
github.com/minio/md5-simd v1.1.0/go.mod h1:XpBqgZULrMYD3R+M28PcmP0CkI7PEMzB3U77ZrKZ0Gw=
|
||||
github.com/minio/minio-go/v6 v6.0.57 h1:ixPkbKkyD7IhnluRgQpGSpHdpvNVaW6OD5R9IAO/9Tw=
|
||||
github.com/minio/minio-go/v6 v6.0.57/go.mod h1:5+R/nM9Pwrh0vqF+HbYYDQ84wdUFPyXHkrdT4AIkifM=
|
||||
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
|
||||
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
|
||||
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2/go.mod h1:MLIrzg7gp/kzVBxRE1olT7CWYMCklcUWU+ekoxOD9x0=
|
||||
github.com/ncw/rclone v1.46.0 h1:5SY9lB6LIIXqwOaCWp5twUqNWgJVZMW+0D4rX90A2+E=
|
||||
github.com/ncw/rclone v1.46.0/go.mod h1:+uFY4HNpat/yXXIEin5ETWXxIwEplC+eDe/vT8vlk1w=
|
||||
github.com/ncw/swift v1.0.44 h1:EKvOTvUxElbpDWqxsyVaVGvc2IfuOqQnRmjnR2AGhQ4=
|
||||
github.com/ncw/swift v1.0.44/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
|
||||
github.com/nsf/termbox-go v0.0.0-20181027232701-60ab7e3d12ed/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
|
||||
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd/go.mod h1:4soZNh0zW0LtYGdQ416i0jO0EIqMGcbtaspRS4BDvRQ=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
|
||||
github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE=
|
||||
github.com/pengsrc/go-shared v0.2.0/go.mod h1:jVblp62SafmidSkvWrXyxAme3gaTfEtWwRPGz5cpvHg=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.8.3/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46 h1:w2CpS5muK+jyydnmlkqpAhzKmHmMBzBkfYUDjQNS1Dk=
|
||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46/go.mod h1:U2bmx0hDj8EyDdcxmD5t3XHDnBFnyNNc22n1R4008eM=
|
||||
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/sevlyar/go-daemon v0.1.4/go.mod h1:6dJpPatBT9eUwM5VCw9Bt6CdX9Tk6UWvhW3MebLDRKE=
|
||||
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
||||
github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo=
|
||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c h1:fyKiXKO1/I/B6Y2U8T7WdQGWzwehOuGIrljPtt7YTTI=
|
||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE=
|
||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da/go.mod h1:XWL4vDyd3JKmJx+hZWUVgCNmmhZ2dTBcaNDcxH465s0=
|
||||
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
|
||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||
github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.0.2 h1:akYIkZ28e6A96dkWNJQu3nmCzH3YfwMPQExUYDaRv7w=
|
||||
github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs=
|
||||
github.com/xdg-go/stringprep v1.0.2 h1:6iq84/ryjjeRmMJwxutI51F2GIPlP5BfTvXHeYjyhBc=
|
||||
github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
|
||||
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
|
||||
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible/go.mod h1:w6wqLDQ5bBTzxGJ55581UrSwLrsTAsdo9N6yX/8d9RY=
|
||||
go.mongodb.org/mongo-driver v1.7.2 h1:pFttQyIiJUHEn50YfZgC9ECjITMT44oiN36uArf/OFg=
|
||||
go.mongodb.org/mongo-driver v1.7.2/go.mod h1:Q4oFMbo1+MSNqICAdYMlC/zSTrwCogR4R8NzkI+yfU8=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||
golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM=
|
||||
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco=
|
||||
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba h1:YDkOrzGLLYybtuP6ZgebnO4OWYEYVMFSniazXsxrFN8=
|
||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60=
|
||||
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a h1:yMfgT1baklxtECXVk3UtZBELVXtVhDbK3/7xLFkFypw=
|
||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
||||
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk=
|
||||
gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
6
main.go
6
main.go
|
|
@ -1,9 +1,10 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"local/sandbox/contact/contact"
|
||||
"log"
|
||||
"regexp"
|
||||
|
||||
"gitea.inhome.blapointe.com/local-sandbox/contact"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -12,6 +13,7 @@ func main() {
|
|||
IMAP: config.EmailIMAP,
|
||||
From: config.EmailUser,
|
||||
Password: config.EmailPass,
|
||||
Limit: config.EmailLimit,
|
||||
}
|
||||
emails, err := emailer.Read()
|
||||
if err != nil {
|
||||
|
|
@ -33,7 +35,7 @@ func main() {
|
|||
log.Printf("skipping match account antipattern %q vs %q", config.AccountsAntiPattern, transaction.Account)
|
||||
continue
|
||||
}
|
||||
if _, err := config.Storage.Get(transaction.ID); err == nil {
|
||||
if v, err := config.Storage.Get(transaction.ID); err == nil || string(v) == transaction.String() {
|
||||
log.Println("skipping duplicate transaction:", transaction)
|
||||
} else {
|
||||
if err := Upload(config, transaction); err != nil {
|
||||
|
|
|
|||
478
scrape.go
478
scrape.go
|
|
@ -4,9 +4,11 @@ import (
|
|||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/mail"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
|
@ -15,9 +17,13 @@ type scraper interface {
|
|||
scrape(*mail.Message) ([]*Transaction, error)
|
||||
}
|
||||
|
||||
type fidelityScraper struct{}
|
||||
type bankOfAmericaScraper struct{}
|
||||
type chaseScraper struct{}
|
||||
type citiScraper struct{}
|
||||
type uccuScraper struct{}
|
||||
type amexScraper struct{}
|
||||
type plumasScraper struct{}
|
||||
|
||||
func Scrape(m *mail.Message, banks map[Bank]bool) ([]*Transaction, error) {
|
||||
scraper, err := buildScraper(m, banks)
|
||||
|
|
@ -29,20 +35,40 @@ func Scrape(m *mail.Message, banks map[Bank]bool) ([]*Transaction, error) {
|
|||
|
||||
func buildScraper(m *mail.Message, banks map[Bank]bool) (scraper, error) {
|
||||
subject := fmt.Sprint(m.Header["Subject"])
|
||||
if !containsAny(subject, "transaction", "report", "Transaction", "payment") {
|
||||
if !containsAny(subject, "transaction", "report", "Transaction", "payment", "Payment", "Deposit", "Withdrawal", "balance is", "Balance", "Large Purchase", "transaction with", "credit pending on your card", "Account Alert") {
|
||||
return nil, errors.New("cannot build scraper for subject " + subject)
|
||||
}
|
||||
from := fmt.Sprint(m.Header["From"])
|
||||
if strings.Contains(from, "Chase") && banks[Chase] {
|
||||
return newChaseScraper(), nil
|
||||
}
|
||||
if strings.Contains(from, "Fidelity") && banks[Fidelity] {
|
||||
return newFidelityScraper(), nil
|
||||
}
|
||||
if strings.Contains(from, "Bank of America") && banks[BankOfAmerica] {
|
||||
return newBankOfAmericaScraper(), nil
|
||||
}
|
||||
if strings.Contains(from, "Citi") && banks[Citi] {
|
||||
return newCitiScraper(), nil
|
||||
}
|
||||
if strings.Contains(from, "Notifications@uccu.com") && banks[UCCU] {
|
||||
return newUCCUScraper(), nil
|
||||
}
|
||||
return nil, errors.New("unknown sender: " + from)
|
||||
if strings.Contains(from, "Notifications@plumasbank.com") && banks[Plumas] {
|
||||
return newPlumasScraper(), nil
|
||||
}
|
||||
if strings.Contains(strings.ToLower(from), strings.ToLower("AmericanExpress")) && banks[Amex] {
|
||||
return newAmexScraper(), nil
|
||||
}
|
||||
return nil, fmt.Errorf("unknown sender: %q", from)
|
||||
}
|
||||
|
||||
func newFidelityScraper() scraper {
|
||||
return &fidelityScraper{}
|
||||
}
|
||||
|
||||
func newBankOfAmericaScraper() scraper {
|
||||
return &bankOfAmericaScraper{}
|
||||
}
|
||||
|
||||
func newChaseScraper() scraper {
|
||||
|
|
@ -57,6 +83,14 @@ func newCitiScraper() scraper {
|
|||
return &citiScraper{}
|
||||
}
|
||||
|
||||
func newAmexScraper() scraper {
|
||||
return &amexScraper{}
|
||||
}
|
||||
|
||||
func newPlumasScraper() scraper {
|
||||
return &plumasScraper{}
|
||||
}
|
||||
|
||||
func containsAny(a string, b ...string) bool {
|
||||
for i := range b {
|
||||
if strings.Contains(a, b[i]) {
|
||||
|
|
@ -67,13 +101,100 @@ func containsAny(a string, b ...string) bool {
|
|||
}
|
||||
|
||||
func (c *chaseScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
transactions, err := c.scrape2021(m)
|
||||
if err == nil && len(transactions) > 0 {
|
||||
if transactions, err := c.scrape202506(m); err == nil && len(transactions) > 0 {
|
||||
return transactions, err
|
||||
}
|
||||
if transactions, err := c.scrape2025Balance(m); err == nil && len(transactions) > 0 {
|
||||
return transactions, err
|
||||
}
|
||||
if transactions, err := c.scrape2021(m); err == nil && len(transactions) > 0 {
|
||||
return transactions, err
|
||||
}
|
||||
return c.scrape2020(m)
|
||||
}
|
||||
|
||||
func (c *chaseScraper) scrape202506(m *mail.Message) ([]*Transaction, error) {
|
||||
if xactions, err := c.scrape202506Charge(m); err == nil && len(xactions) > 0 {
|
||||
return xactions, nil
|
||||
}
|
||||
return c.scrape202506Credit(m)
|
||||
}
|
||||
|
||||
func (c *chaseScraper) scrape202506Credit(m *mail.Message) ([]*Transaction, error) {
|
||||
pattern := `^You have a \$([0-9][,0-9]*\.[0-9]{2}) credit pending on your credit card`
|
||||
re := regexp.MustCompile(pattern)
|
||||
matches := re.FindSubmatch([]byte(m.Header["Subject"][0]))
|
||||
if len(matches) < 1 {
|
||||
return nil, fmt.Errorf("no match subject search (%q vs %q)", pattern, m.Header["Subject"][0])
|
||||
}
|
||||
b, _ := io.ReadAll(m.Body)
|
||||
|
||||
amount := string(matches[1])
|
||||
amount = strings.ReplaceAll(amount, ",", "")
|
||||
vendor := "*"
|
||||
|
||||
re = regexp.MustCompile(`\(\.\.\.[0-9]{4}\)`)
|
||||
match := re.Find(b)
|
||||
re = regexp.MustCompile(`[0-9]{4}`)
|
||||
account := string(re.Find(match))
|
||||
|
||||
return []*Transaction{NewTransaction(account, amount, vendor, fmt.Sprint(m.Header["Date"]), Chase)}, nil
|
||||
}
|
||||
|
||||
func (c *chaseScraper) scrape202506Charge(m *mail.Message) ([]*Transaction, error) {
|
||||
pattern := `^(Your|You made an?) (\$(?P<amount>[,0-9\.]*)|online, phone, or mail) transaction with (?P<vendor>.*)$`
|
||||
re := regexp.MustCompile(pattern)
|
||||
matches := re.FindSubmatch([]byte(m.Header["Subject"][0]))
|
||||
if len(matches) < 1 {
|
||||
return nil, fmt.Errorf("no match subject search (%q vs %q)", pattern, m.Header["Subject"][0])
|
||||
}
|
||||
b, _ := io.ReadAll(m.Body)
|
||||
|
||||
amount := string(matches[3])
|
||||
if amount == "" {
|
||||
pattern := `\$([0-9][,0-9]*\.[0-9]{2})`
|
||||
matches := regexp.MustCompile(pattern).FindStringSubmatch(string(b))
|
||||
if len(matches) < 2 || len(matches[1]) == 0 {
|
||||
return nil, fmt.Errorf("no $x,yyy,zz in body")
|
||||
}
|
||||
amount = matches[1]
|
||||
}
|
||||
amount = strings.ReplaceAll(amount, ",", "")
|
||||
vendor := string(matches[4])
|
||||
|
||||
re = regexp.MustCompile(`\(\.\.\.[0-9]{4}\)`)
|
||||
match := re.Find(b)
|
||||
re = regexp.MustCompile(`[0-9]{4}`)
|
||||
account := string(re.Find(match))
|
||||
|
||||
return []*Transaction{NewTransaction(account, amount, vendor, fmt.Sprint(m.Header["Date"]), Chase)}, nil
|
||||
}
|
||||
|
||||
func (c *chaseScraper) scrape2025Balance(m *mail.Message) ([]*Transaction, error) {
|
||||
re := regexp.MustCompile(`^Your.*balance is \$[0-9,\.]*$`)
|
||||
if !re.Match([]byte(m.Header["Subject"][0])) {
|
||||
return nil, errors.New("no match subject search")
|
||||
}
|
||||
subject := m.Header["Subject"][0]
|
||||
|
||||
fields := strings.Fields(subject)
|
||||
amount := fields[len(fields)-1]
|
||||
amount = strings.TrimLeft(amount, "$")
|
||||
amount = strings.ReplaceAll(amount, ",", "")
|
||||
amount = fmt.Sprintf("=%s", amount)
|
||||
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
re = regexp.MustCompile(`\(\.\.\.([0-9]{4})\)`)
|
||||
submatches := re.FindSubmatch(b)
|
||||
account := string(submatches[len(submatches)-1])
|
||||
|
||||
return []*Transaction{NewTransaction(account, amount, "*", fmt.Sprint(m.Header["Date"]), Chase)}, nil
|
||||
}
|
||||
|
||||
func (c *chaseScraper) scrape2021(m *mail.Message) ([]*Transaction, error) {
|
||||
if t, err := c.scrape2021Payment(m); err == nil {
|
||||
return t, err
|
||||
|
|
@ -92,8 +213,10 @@ func (c *chaseScraper) scrape2021Payment(m *mail.Message) ([]*Transaction, error
|
|||
return nil, err
|
||||
}
|
||||
|
||||
re = regexp.MustCompile(`\$[0-9]+\.[0-9]{2}`)
|
||||
re = regexp.MustCompile(`\$[0-9,]+\.[0-9]{2}`)
|
||||
amount := "-" + strings.TrimLeft(string(re.Find(b)), "$")
|
||||
amount = strings.TrimLeft(string(re.Find(b)), "$")
|
||||
amount = strings.ReplaceAll(amount, ",", "")
|
||||
|
||||
vendor := "Payment"
|
||||
|
||||
|
|
@ -106,12 +229,13 @@ func (c *chaseScraper) scrape2021Payment(m *mail.Message) ([]*Transaction, error
|
|||
}
|
||||
|
||||
func (c *chaseScraper) scrape2021Charge(m *mail.Message) ([]*Transaction, error) {
|
||||
re := regexp.MustCompile(`^Your \$(?P<amount>[0-9\.]*) transaction with (?P<vendor>.*)$`)
|
||||
re := regexp.MustCompile(`^Your \$(?P<amount>[,0-9\.]*) transaction with (?P<vendor>.*)$`)
|
||||
matches := re.FindSubmatch([]byte(m.Header["Subject"][0]))
|
||||
if len(matches) < 1 {
|
||||
return nil, errors.New("no match subject search")
|
||||
}
|
||||
amount := string(matches[1])
|
||||
amount = strings.ReplaceAll(amount, ",", "")
|
||||
vendor := string(matches[2])
|
||||
|
||||
b, _ := ioutil.ReadAll(m.Body)
|
||||
|
|
@ -159,60 +283,21 @@ func (c *citiScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
re := regexp.MustCompile(`Citi Alert: A \$[0-9][0-9]*\.[0-9][0-9] transaction was made at .* on card ending in`)
|
||||
re := regexp.MustCompile(`Citi Alert: A \$[,0-9][,0-9]*\.[0-9][0-9] transaction was made at .* on card ending in`)
|
||||
match := re.Find(b)
|
||||
if len(match) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
rePrice := regexp.MustCompile(`[0-9][0-9]*\.[0-9][0-9]`)
|
||||
rePrice := regexp.MustCompile(`[0-9][0-9,]*\.[0-9][0-9]`)
|
||||
price := rePrice.Find(match)
|
||||
price = []byte(strings.ReplaceAll(string(price), ",", ""))
|
||||
|
||||
vendor := bytes.Split(bytes.Split(match, []byte(" on card ending in"))[0], []byte("transaction was made at "))[1]
|
||||
|
||||
transaction := NewTransaction(Citi.String(), string(price), string(vendor), date, Citi)
|
||||
|
||||
return []*Transaction{transaction}, nil
|
||||
//Citi Alert: A $598.14 transaction was made at REMIX MUSIC SPRINGDA on card ending in 3837
|
||||
/*
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
targetLineRegexp := regexp.MustCompile(`Account #: XXXX[0-9]{4} .*`)
|
||||
targetMatches := targetLineRegexp.FindAll(b, -1)
|
||||
if len(targetMatches) == 0 {
|
||||
return nil, errors.New("no lines with transactions found")
|
||||
}
|
||||
|
||||
results := make(map[string][]string)
|
||||
for _, b := range targetMatches {
|
||||
// Account #: XXXX3837 $137.87 at AMZN Mktp US Amzn.com/bill WA on 04/03/2020, 09:05 PM ET
|
||||
regexp := regexp.MustCompile(`Account #: XXXX[0-9]{4} \$(?P<amount>[0-9]+\.[0-9]*) at (?P<account>[^,]*)`)
|
||||
matches := regexp.FindSubmatch(b)
|
||||
if len(matches) < 2 {
|
||||
return nil, fmt.Errorf("no full matches found: %s", b)
|
||||
}
|
||||
for i, name := range regexp.SubexpNames() {
|
||||
if i != 0 && name != "" {
|
||||
if name == "account" {
|
||||
matches[i] = bytes.Split(matches[i], []byte(" on "))[0]
|
||||
}
|
||||
results[name] = append(results[name], string(matches[i]))
|
||||
}
|
||||
}
|
||||
if len(results) != 2 || len(results["amount"]) != len(results["account"]) {
|
||||
return nil, fmt.Errorf("unexpected matches found looking for transactions: %+v", results)
|
||||
}
|
||||
}
|
||||
|
||||
transactions := make([]*Transaction, len(results["amount"]))
|
||||
for i := range results["amount"] {
|
||||
transactions[i] = NewTransaction(Citi.String(), results["amount"][i], results["account"][i], fmt.Sprint(m.Header["Date"]), Citi)
|
||||
}
|
||||
|
||||
return transactions, nil
|
||||
*/
|
||||
}
|
||||
|
||||
func (c *uccuScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
|
|
@ -220,6 +305,9 @@ func (c *uccuScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if bytes.Contains(b, []byte(`alance alert`)) {
|
||||
return c.scrapeBalance(m, b)
|
||||
}
|
||||
regexp := regexp.MustCompile(`\$([0-9]+,?)+\.[0-9][0-9]`)
|
||||
match := regexp.Find(b)
|
||||
if len(match) == 0 {
|
||||
|
|
@ -237,3 +325,297 @@ func (c *uccuScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
|||
transaction := NewTransaction(UCCU.String(), fmt.Sprintf("%.2f", f), "?", fmt.Sprint(m.Header["Date"]), UCCU)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *uccuScraper) scrapeBalance(m *mail.Message, b []byte) ([]*Transaction, error) {
|
||||
re := regexp.MustCompile(`is \$([0-9]+,?)+\.[0-9][0-9]`)
|
||||
match := re.Find(b)
|
||||
if len(match) == 0 {
|
||||
return nil, fmt.Errorf("no matches found")
|
||||
}
|
||||
match = match[4:]
|
||||
match = bytes.ReplaceAll(match, []byte(","), []byte{})
|
||||
f, err := strconv.ParseFloat(string(match), 10)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
acc := UCCU.String()
|
||||
re = regexp.MustCompile(`ending in [0-9]*`)
|
||||
match = re.Find(b)
|
||||
if len(match) > 0 {
|
||||
acc = fmt.Sprintf("%s-%s", acc, match[len(`ending in `):])
|
||||
}
|
||||
|
||||
transaction := NewTransaction(acc, fmt.Sprintf("=%.2f", f), "*", fmt.Sprint(m.Header["Date"]), UCCU)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *amexScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
b = bytes.ReplaceAll(b, []byte("=\n"), []byte(""))
|
||||
|
||||
matches := regexp.MustCompile(`\$([0-9]+,?)+\.[0-9][0-9]`).FindAll(b, -1)
|
||||
matches = slices.DeleteFunc(matches, func(match []byte) bool {
|
||||
return string(match) == "$1.00"
|
||||
})
|
||||
if len(matches) == 0 {
|
||||
return nil, fmt.Errorf("no matches found")
|
||||
}
|
||||
match := matches[0]
|
||||
match = match[1:]
|
||||
match = bytes.ReplaceAll(match, []byte(","), []byte{})
|
||||
f, err := strconv.ParseFloat(string(match), 10)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
f *= -1.0
|
||||
|
||||
vendors := regexp.MustCompile(`>[A-Z][A-Z ]*<`).FindAll(b, -1)
|
||||
vendors = slices.DeleteFunc(vendors, func(b []byte) bool { return string(b) == ">BREE A LAPOINTE<" })
|
||||
vendor := "*"
|
||||
if len(vendors) > 0 {
|
||||
vendor = string(vendors[0])
|
||||
}
|
||||
vendor = strings.TrimSpace(strings.Trim(strings.Trim(vendor, ">"), "<"))
|
||||
vendor = strings.ReplaceAll(vendor, "\n", "")
|
||||
|
||||
accs := regexp.MustCompile(`Account Ending: [0-9]*([0-9]{4})[^0-9]`).FindSubmatch(b)
|
||||
acc := "?"
|
||||
if len(accs) > 1 {
|
||||
acc = string(accs[1])
|
||||
}
|
||||
acc = strings.ReplaceAll(acc, "\n", "")
|
||||
|
||||
transaction := NewTransaction(
|
||||
fmt.Sprintf("%s-%s", Amex.String(), acc),
|
||||
fmt.Sprintf("%.2f", f),
|
||||
vendor,
|
||||
fmt.Sprint(m.Header["Date"]),
|
||||
Amex,
|
||||
)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *fidelityScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
subject := fmt.Sprint(m.Header["Subject"])
|
||||
if strings.Contains(subject, "Daily Balance") {
|
||||
return c.scrapeBalance(m)
|
||||
}
|
||||
if strings.Contains(subject, "Debit Withdrawal") {
|
||||
return c.scrapeWithdrawal(m)
|
||||
}
|
||||
if strings.Contains(subject, "Deposit Received") {
|
||||
return c.scrapeDeposit(m)
|
||||
}
|
||||
panic(nil)
|
||||
}
|
||||
|
||||
func (c *fidelityScraper) scrapeBalance(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fidelAcc, _ := findSubstringBetween(b, "Account: XXXXX", "\n")
|
||||
fidelAmount, _ := findSubstringBetween(b, "Your Daily Balance is $", " for ")
|
||||
|
||||
transaction := NewTransaction(
|
||||
fmt.Sprintf("%s-%s", Fidelity, fidelAcc),
|
||||
"="+strings.ReplaceAll(fidelAmount, ",", ""),
|
||||
"*",
|
||||
fmt.Sprint(m.Header["Date"]),
|
||||
Fidelity,
|
||||
)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *fidelityScraper) scrapeDeposit(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fidelAcc, _ := findSubstringBetween(b, "Account: XXXXX", "\n")
|
||||
|
||||
transaction := NewTransaction(
|
||||
fmt.Sprintf("%s-%s", Fidelity, fidelAcc),
|
||||
"?.??",
|
||||
"misc",
|
||||
fmt.Sprint(m.Header["Date"]),
|
||||
Fidelity,
|
||||
)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *fidelityScraper) scrapeWithdrawal(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
amount, amountOk := findSubstringBetween(b, "in the amount of $", " ")
|
||||
fidelAcc, fidelAccOk := findSubstringBetween(b, "For account ending in ", ":")
|
||||
acc, accOk := findSubstringBetween(b, "in the amount of $"+amount+" by ", ".")
|
||||
|
||||
if amount == "" || acc == "" {
|
||||
return nil, fmt.Errorf("no amount/account found: fidelAcc=%v,fidelAccOk=%v, acc=%v,accOk=%v, amount=%v,amountOk=%v", fidelAcc, fidelAccOk, acc, accOk, amount, amountOk)
|
||||
}
|
||||
transaction := NewTransaction(fmt.Sprintf("%s-%s", Fidelity, fidelAcc), amount, acc, fmt.Sprint(m.Header["Date"]), Fidelity)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *bankOfAmericaScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
subject := fmt.Sprint(m.Header["Subject"])
|
||||
if strings.Contains(subject, "Credit card transaction") {
|
||||
return c.scrapeCharge(m)
|
||||
}
|
||||
if strings.Contains(subject, "Credit Card Payment") {
|
||||
return c.scrapePayment(m)
|
||||
}
|
||||
return nil, errors.New("not impl")
|
||||
}
|
||||
|
||||
func (c *bankOfAmericaScraper) scrapeCharge(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if v, err := c.scrapeCharge2023(m, b); err == nil {
|
||||
return v, nil
|
||||
}
|
||||
return c.scrapeCharge2024(m, b)
|
||||
}
|
||||
|
||||
func (c *bankOfAmericaScraper) scrapeCharge2023(m *mail.Message, b []byte) ([]*Transaction, error) {
|
||||
amount := findFloatAfter(b, "Amount: $")
|
||||
acc := string(findLineAfter(b, "Where: "))
|
||||
|
||||
if amount == "" || acc == "" {
|
||||
return nil, errors.New("no amount/account found")
|
||||
}
|
||||
transaction := NewTransaction(BankOfAmerica.String(), amount, acc, fmt.Sprint(m.Header["Date"]), BankOfAmerica)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *bankOfAmericaScraper) scrapeCharge2024(m *mail.Message, b []byte) ([]*Transaction, error) {
|
||||
amountPattern := `Amount:[^\$]*\$([0-9]*\.[0-9]*)`
|
||||
amountMatches := regexp.MustCompile(amountPattern).FindSubmatch(bytes.ReplaceAll(b, []byte("\n"), []byte(" ")))
|
||||
if len(amountMatches) < 2 {
|
||||
return nil, fmt.Errorf("email does not match amount %q: %+v", amountPattern, amountMatches)
|
||||
}
|
||||
amount := string(amountMatches[1])
|
||||
|
||||
b2 := bytes.Split(b, []byte("Where:"))[1]
|
||||
b3 := bytes.Split(b2, []byte("</tr>"))[0]
|
||||
b4 := bytes.ReplaceAll(b3, []byte("\n"), []byte(" "))
|
||||
accPattern := `<b>(.*)</b>`
|
||||
accMatches := regexp.MustCompile(accPattern).FindSubmatch(b4)
|
||||
if len(accMatches) < 2 {
|
||||
return nil, fmt.Errorf("email does not match acc %q", accPattern)
|
||||
}
|
||||
acc := string(accMatches[1])
|
||||
|
||||
if amount == "" || acc == "" {
|
||||
return nil, errors.New("no amount/account found")
|
||||
}
|
||||
transaction := NewTransaction(BankOfAmerica.String(), amount, acc, fmt.Sprint(m.Header["Date"]), BankOfAmerica)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *bankOfAmericaScraper) scrapePayment(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
amount := "-" + findFloatAfter(b, "Payment: $")
|
||||
acc := "Payment"
|
||||
if amount == "" || acc == "" {
|
||||
return nil, errors.New("no amount/account found")
|
||||
}
|
||||
transaction := NewTransaction(BankOfAmerica.String(), amount, acc, fmt.Sprint(m.Header["Date"]), BankOfAmerica)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *plumasScraper) scrape(m *mail.Message) ([]*Transaction, error) {
|
||||
b, err := ioutil.ReadAll(m.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if bytes.Contains(b, []byte(`alance alert`)) {
|
||||
return c.scrapeBalance(m, b)
|
||||
}
|
||||
regexp := regexp.MustCompile(`\$([0-9]+,?)+\.[0-9][0-9]`)
|
||||
match := regexp.Find(b)
|
||||
if len(match) == 0 {
|
||||
return nil, fmt.Errorf("no matches found")
|
||||
}
|
||||
match = match[1:]
|
||||
match = bytes.ReplaceAll(match, []byte(","), []byte{})
|
||||
f, err := strconv.ParseFloat(string(match), 10)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !bytes.Contains(b, []byte("credit")) {
|
||||
f *= -1.0
|
||||
}
|
||||
transaction := NewTransaction(Plumas.String(), fmt.Sprintf("%.2f", f), "?", fmt.Sprint(m.Header["Date"]), Plumas)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func (c *plumasScraper) scrapeBalance(m *mail.Message, b []byte) ([]*Transaction, error) {
|
||||
re := regexp.MustCompile(`is \$([0-9]+,?)+\.[0-9][0-9]`)
|
||||
match := re.Find(b)
|
||||
if len(match) == 0 {
|
||||
return nil, fmt.Errorf("no matches found")
|
||||
}
|
||||
match = match[4:]
|
||||
match = bytes.ReplaceAll(match, []byte(","), []byte{})
|
||||
f, err := strconv.ParseFloat(string(match), 10)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
acc := Plumas.String()
|
||||
re = regexp.MustCompile(`ending in [0-9]*`)
|
||||
match = re.Find(b)
|
||||
if len(match) > 0 {
|
||||
acc = fmt.Sprintf("%s-%s", acc, match[len(`ending in `):])
|
||||
}
|
||||
|
||||
transaction := NewTransaction(acc, fmt.Sprintf("=%.2f", f), "*", fmt.Sprint(m.Header["Date"]), Plumas)
|
||||
return []*Transaction{transaction}, nil
|
||||
}
|
||||
|
||||
func findSubstringBetween(b []byte, prefix, suffix string) (string, bool) {
|
||||
byPre := bytes.Split(b, []byte(prefix))
|
||||
if len(byPre) < 2 {
|
||||
return "", false
|
||||
}
|
||||
bySuff := bytes.Split(byPre[1], []byte(suffix))
|
||||
if len(bySuff) < 2 {
|
||||
return "", false
|
||||
}
|
||||
return string(bySuff[0]), true
|
||||
}
|
||||
|
||||
func findFloatAfter(b []byte, prefix string) string {
|
||||
amount := string(findLineAfter(b, prefix))
|
||||
words := strings.Split(amount, " ")
|
||||
lastword := words[len(words)-1]
|
||||
escapedfloat := strings.TrimPrefix(lastword, "$")
|
||||
fixEscape := strings.ReplaceAll(escapedfloat, "=2E", ".")
|
||||
amount = fixEscape
|
||||
return amount
|
||||
}
|
||||
|
||||
func findLineAfter(b []byte, prefix string) []byte {
|
||||
for _, line := range bytes.Split(b, []byte("\n")) {
|
||||
if bytes.HasPrefix(line, []byte(prefix)) {
|
||||
return bytes.TrimSpace(bytes.TrimPrefix(line, []byte(prefix)))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
447
scrape_test.go
447
scrape_test.go
|
|
@ -4,9 +4,176 @@ import (
|
|||
"bytes"
|
||||
"io/ioutil"
|
||||
"net/mail"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestScrapeAmex(t *testing.T) {
|
||||
b, _ := os.ReadFile("testdata/amex.txt")
|
||||
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Large Purchase Approved"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
amex := &amexScraper{}
|
||||
|
||||
gots, err := amex.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "AmericanExpress-2003" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "-30.00" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "CRAWFORD LEISHMAN DENTAL" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeUCCUBalance(t *testing.T) {
|
||||
b, _ := os.ReadFile("testdata/uccu.balance.txt")
|
||||
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"UCCU Account Alert Notification"},
|
||||
},
|
||||
}
|
||||
|
||||
uccu := &uccuScraper{}
|
||||
|
||||
gots, err := uccu.scrapeBalance(message, b)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "UCCU-33350" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "=231.20" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "*" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeFidelityBalance(t *testing.T) {
|
||||
b, _ := os.ReadFile("testdata/fidelity.balance.txt")
|
||||
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Fidelity Alerts: Daily Balance"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
fidelity := &fidelityScraper{}
|
||||
|
||||
gots, err := fidelity.scrapeBalance(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "Fidelity-5576" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "=5525.52" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "*" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase2025Balance(t *testing.T) {
|
||||
b, _ := os.ReadFile("testdata/chase.2025.balance.txt")
|
||||
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Your Chase Freedom Unlimited balance is $1,029.08"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
chase := &chaseScraper{}
|
||||
|
||||
gots, err := chase.scrape2025Balance(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "5876" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "=1029.08" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "*" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase202112Payment(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.2021.12.payment.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"We've received your Chase Freedom Unlimited payment"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
chase := &chaseScraper{}
|
||||
|
||||
gots, err := chase.scrape2021(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "1049" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "1750.00" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "Payment" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase2021Payment(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.2021.payment.txt")
|
||||
if err != nil {
|
||||
|
|
@ -42,6 +209,111 @@ func TestScrapeChase2021Payment(t *testing.T) {
|
|||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase202506Credit(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.202506.credit.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"You have a $394.96 credit pending on your credit card"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
chase := &chaseScraper{}
|
||||
|
||||
gots, err := chase.scrape202506(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "5876" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "394.96" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "*" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase202506(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.202506.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"You made a $3.42 transaction with Nintendo CB141137080"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
chase := &chaseScraper{}
|
||||
|
||||
gots, err := chase.scrape202506(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "5876" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "3.42" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "Nintendo CB141137080" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase202506Online(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.202506.online.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"You made an online, phone, or mail transaction with DD *KLUCKSKRISPYCHIC"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
|
||||
chase := &chaseScraper{}
|
||||
|
||||
gots, err := chase.scrape202506(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(gots)
|
||||
}
|
||||
got := gots[0]
|
||||
|
||||
if got.Account != "5876" {
|
||||
t.Fatalf("bad account: %v: %+v", got.Account, got)
|
||||
}
|
||||
if got.Amount != "18.17" {
|
||||
t.Fatalf("bad amount: %v: %+v", got.Amount, got)
|
||||
}
|
||||
if got.Vendor != "DD *KLUCKSKRISPYCHIC" {
|
||||
t.Fatalf("bad vendor: %v: %+v", got.Vendor, got)
|
||||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeChase2021(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/chase.2021.txt")
|
||||
if err != nil {
|
||||
|
|
@ -108,3 +380,178 @@ func TestScrapeChase2020(t *testing.T) {
|
|||
}
|
||||
t.Logf("%+v", got)
|
||||
}
|
||||
|
||||
func TestScrapeBofAPayment(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/bofa.payment.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Confirmation: Thanks for Your Credit Card Payment"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
bofa := &bankOfAmericaScraper{}
|
||||
|
||||
gots, err := bofa.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(len(gots))
|
||||
}
|
||||
got := gots[0]
|
||||
want := Transaction{
|
||||
ID: got.ID,
|
||||
Bank: BankOfAmerica,
|
||||
Amount: "-251.74",
|
||||
Vendor: "Payment",
|
||||
Date: "[]",
|
||||
Account: BankOfAmerica.String(),
|
||||
}
|
||||
if *got != want {
|
||||
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScrapeFidelityDeposit(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/fidelity.deposit.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Fidelity Alerts: Deposit Received"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
fidelity := &fidelityScraper{}
|
||||
|
||||
gots, err := fidelity.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(len(gots))
|
||||
}
|
||||
got := gots[0]
|
||||
want := Transaction{
|
||||
ID: got.ID,
|
||||
Bank: Fidelity,
|
||||
Amount: "?.??",
|
||||
Vendor: "misc",
|
||||
Date: "[]",
|
||||
Account: Fidelity.String() + "-5576",
|
||||
}
|
||||
if *got != want {
|
||||
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScrapeFidelityWithdrawal(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/fidelity.withdrawal.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Fidelity Alerts - Direct Debit Withdrawal"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
fidelity := &fidelityScraper{}
|
||||
|
||||
gots, err := fidelity.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(len(gots))
|
||||
}
|
||||
got := gots[0]
|
||||
want := Transaction{
|
||||
ID: got.ID,
|
||||
Bank: Fidelity,
|
||||
Amount: "1.00",
|
||||
Vendor: "CHASE CREDIT CRD",
|
||||
Date: "[]",
|
||||
Account: Fidelity.String() + "-5576",
|
||||
}
|
||||
if *got != want {
|
||||
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScrapeBofACharge2024(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/bofa.charge.2024.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Credit card transaction exceeds alert limit you set"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
bofa := &bankOfAmericaScraper{}
|
||||
|
||||
gots, err := bofa.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(len(gots))
|
||||
}
|
||||
got := gots[0]
|
||||
want := Transaction{
|
||||
ID: got.ID,
|
||||
Bank: BankOfAmerica,
|
||||
Amount: "21.48",
|
||||
Vendor: "PP SPOTIFYUSAI",
|
||||
Date: "[]",
|
||||
Account: BankOfAmerica.String(),
|
||||
}
|
||||
if *got != want {
|
||||
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestScrapeBofACharge(t *testing.T) {
|
||||
b, err := ioutil.ReadFile("./testdata/bofa.charge.txt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
message := &mail.Message{
|
||||
Header: map[string][]string{
|
||||
"Subject": []string{"Credit card transaction exceeds alert limit you set"},
|
||||
},
|
||||
Body: bytes.NewReader(b),
|
||||
}
|
||||
bofa := &bankOfAmericaScraper{}
|
||||
|
||||
gots, err := bofa.scrape(message)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(gots) != 1 {
|
||||
t.Fatal(len(gots))
|
||||
}
|
||||
got := gots[0]
|
||||
want := Transaction{
|
||||
ID: got.ID,
|
||||
Bank: BankOfAmerica,
|
||||
Amount: "75.08",
|
||||
Vendor: "PAYPAL GIBBDOGENTE MA",
|
||||
Date: "[]",
|
||||
Account: BankOfAmerica.String(),
|
||||
}
|
||||
if *got != want {
|
||||
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,623 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6e04:410a:b0:337:e209:a6dd with SMTP id ab10csp997577imd;
|
||||
Fri, 22 Nov 2024 03:21:45 -0800 (PST)
|
||||
X-Google-Smtp-Source: AGHT+IF+g6ycRXBD1NCmTgCmYsdR7EaUiTrr6m4TjY81halMm8PMqQPaIVPGdqeuLn6MScBOpgIL
|
||||
X-Received: by 2002:a05:6214:d6e:b0:6d4:2b2:61f9 with SMTP id 6a1803df08f44-6d442336b62mr127197466d6.5.1732274505767;
|
||||
Fri, 22 Nov 2024 03:21:45 -0800 (PST)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1732274505; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=DOWQaaaBxJOxTAbGlmwXcxHxVYcT2JoZRrYDY1ybcxQmvEhuXA2mDLI4sbePTHa1X+
|
||||
NLEh/hvBkwfwQe0b7554tIaTF3Q/7MBsZKRttc41JcgnbsApiznFn5ncGJ5/vuPTMAG9
|
||||
8/oBvgNLjgJ8R7yUBSYNR0zlPeaN69okV59DJ2FYjIxvKCbuaM/aeJ7qQtrrvIcG0Oyi
|
||||
YRRcw8l4pkenP9fzHo9MmupYS3YJP5YVE0DaIFxA9y1jFkpxN4rGGHl2VPrGUezWBIGJ
|
||||
owxLJNzKwHjzq2cfKvko3BftaBdDVVWetHsHUd5TISPnLYQkfdvctN4SOH9q9JXl0l9T
|
||||
7xTQ==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=content-transfer-encoding:feedback-id:message-id:reply-to
|
||||
:mime-version:list-help:date:subject:to:from:dkim-signature
|
||||
:dkim-signature;
|
||||
bh=Kjcf8l3mYIkPtkdpXpj0inhpY0YdNBqkJohGWf3viHk=;
|
||||
fh=3JUHTSQLTIIxQd8AswL6O34TjQIBrZ4ZoXgEKtTs4Cc=;
|
||||
b=k9x6eOqDsHMK/3BHdWV57glqBDel/EtRixV/w6OsUGH0p4Q9Uhc9TFsHFn1vdChlcr
|
||||
bQnuBKWU8/TM6Z8fb3VdjMX6kQ9dtuFJbGlBdDX5iUuUNGwLytLeyRiQEscMGESlRkQe
|
||||
gmRexmvVRzxE4BlKQqmoJYgq0oNG+pxs8YGgaIBkySe9yU9xw+kdr0fcWkh1Y7C1ILmo
|
||||
eFVH1zRqAHaKe03iXqBb4aLNrJ+mF77CtGi0wU3ZzPz02OI4MGSMFkmJfONE2nE0ZXOD
|
||||
NRcV5My0xaWPs/6vfvBZ+Ffdtjwsqcqyqe7/B3SO0AKZ/iwN1+5uzR81yff1lzFsZc5N
|
||||
/vVw==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@ealerts.bankofamerica.com header.s=200608 header.b=bBfeKaM5;
|
||||
dkim=pass header.i=@s5.y.mc.salesforce.com header.s=fbldkim5 header.b=I8atuJ7U;
|
||||
spf=pass (google.com: domain of bounce-145816_text-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com designates 68.232.194.86 as permitted sender) smtp.mailfrom=bounce-145816_TEXT-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bankofamerica.com
|
||||
Return-Path: <bounce-145816_TEXT-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com>
|
||||
Received: from mta.appointment.bankofamerica.com (mta.appointment.bankofamerica.com. [68.232.194.86])
|
||||
by mx.google.com with ESMTPS id 6a1803df08f44-6d451b8d6e9si17689236d6.558.2024.11.22.03.21.45
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Fri, 22 Nov 2024 03:21:45 -0800 (PST)
|
||||
Received-SPF: pass (google.com: domain of bounce-145816_text-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com designates 68.232.194.86 as permitted sender) client-ip=68.232.194.86;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@ealerts.bankofamerica.com header.s=200608 header.b=bBfeKaM5;
|
||||
dkim=pass header.i=@s5.y.mc.salesforce.com header.s=fbldkim5 header.b=I8atuJ7U;
|
||||
spf=pass (google.com: domain of bounce-145816_text-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com designates 68.232.194.86 as permitted sender) smtp.mailfrom=bounce-145816_TEXT-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bankofamerica.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=200608; d=ealerts.bankofamerica.com; h=From:To:Subject:Date:List-Help:MIME-Version:Reply-To:Message-ID: Content-Type:Content-Transfer-Encoding; i=onlinebanking@ealerts.bankofamerica.com; bh=Kjcf8l3mYIkPtkdpXpj0inhpY0YdNBqkJohGWf3viHk=; b=bBfeKaM5RO/rMVToMyColBLLRtSjYNT3TGvWj49o32q2tfyrsE7wX9Yq7EaMYTCCMzoTWacjdDiF
|
||||
UcfZoBtLt9twX1FMPGFPMJ75J9FJhrEPFhvakDou2fWrwFlV+RMhE9DWOq2eFug4vgpSqGNi/jfF
|
||||
SS9H481F8tG3XpkpuDw=
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=fbldkim5; d=s5.y.mc.salesforce.com; h=From:To:Subject:Date:List-Help:MIME-Version:Reply-To:Message-ID: Content-Type:Content-Transfer-Encoding; bh=Kjcf8l3mYIkPtkdpXpj0inhpY0YdNBqkJohGWf3viHk=; b=I8atuJ7U2Q5P1QwvqEFf5/btRqH4ha8RSoyCenSOtaSf216FNv+Lg443P7yLzghV5bNjEMI/C6b/
|
||||
r9+sUJB09dvKUbxV5qAhQr7a8bbvoKII3mk80NwdZf+4gNigTQFOF2y7rpi1kFZzmYKgvzY/EecN
|
||||
AKfVmwpc+mirDuQi0lcIYAIDbaSsh20DchPAwJN+sw+f6kw+8c61s8PkDIxTFkbu3rTNexMgBEub
|
||||
9zvvxBYVt+yzQqx6NyB5XTSXhpzILBV28SKD2rf0stAe+E9aie5JeSEkdYIceFkEF8RkNmMWq0cj
|
||||
7Esz0wuM90nIy/vUUWEdLKvdVNCAvk5GnA0y5g==
|
||||
Received: by mta.appointment.bankofamerica.com id h81kki2fmd4o for <breellocaldev@gmail.com>; Fri, 22 Nov 2024 11:21:43 +0000 (envelope-from <bounce-145816_TEXT-1457994210-6989359-522000109-197442@bounce.ealerts.bankofamerica.com>)
|
||||
From: Bank of America <onlinebanking@ealerts.bankofamerica.com>
|
||||
To: <breellocaldev@gmail.com>
|
||||
Subject: Credit card transaction exceeds alert limit you set
|
||||
Date: Fri, 22 Nov 2024 05:21:43 -0600
|
||||
List-Help: <http://click.%%_DomainName%%/subscription_center.aspx?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtaWQiOiI1MjIwMDAxMDkiLCJzIjoiMTQ1Nzk5NDIxMCIsImxpZCI6IjE0NTgxNiIsImoiOiI2OTg5MzU5IiwiamIiOiIxOTc0NDIiLCJkIjoiNTAxMTEifQ.VIN-6jZTHGjKCpFQLN6_MwHb5PM931J2PWkK0V62I6o>
|
||||
MIME-Version: 1.0
|
||||
Reply-To: Bank of America <reply-fe7e12797d6d07787c-145816_TEXT-1457994210-522000109-197442@ealerts.bankofamerica.com>
|
||||
X-SFMC-Stack: 5
|
||||
x-job: 522000109_6989359
|
||||
Message-ID: <063d3237-4661-4553-ac40-a4dabde00bad@las1s05mta5.xt.local>
|
||||
Feedback-ID: 522000109:6989359:68.232.194.86:sfmktgcld
|
||||
Content-Type: text/html; charset="iso-8859-1"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
|
||||
<style type="text/css">
|
||||
/* CLIENT-SPECIFIC STYLES */
|
||||
#outlook a{padding:0;} /* Force Outlook to provide a "view in browser" message */
|
||||
.ReadMsgBody{width:100%;} .ExternalClass{width:100%;} /* Force Hotmail to display emails at full width */
|
||||
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing */
|
||||
body, table, td, a{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;} /* Prevent WebKit and Windows mobile changing default text sizes */
|
||||
table, td{mso-table-lspace:0pt; mso-table-rspace:0pt;} /* Remove spacing between tables in Outlook 2007 and up */
|
||||
img{-ms-interpolation-mode:bicubic;} /* Allow smoother rendering of resized image in Internet Explorer */
|
||||
/* RESET STYLES */
|
||||
body{margin:0; padding:0;}
|
||||
img{border:0; height:auto; line-height:100%; outline:none; text-decoration:none;}
|
||||
table{border-collapse:collapse !important;}
|
||||
body{height:100% !important; margin:0; padding:0; width:100% !important;}
|
||||
/* iOS BLUE LINKS */
|
||||
.appleBody a {color:#68440a; text-decoration: none;}
|
||||
.appleFooter a {color:#999999; text-decoration: none;}
|
||||
ReadMsgBody{ width: 100%;}
|
||||
.ExternalClass {width: 100%;}
|
||||
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
|
||||
body {-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;margin:0 !important; padding:0 !important;}
|
||||
p { margin: 1em 0;}
|
||||
table td { border-collapse: collapse;}
|
||||
img {outline:0;}
|
||||
a img {border:none;}
|
||||
p {margin: 1em 0;}
|
||||
@-ms-viewport{ width: device-width;}
|
||||
a[x-apple-data-detectors] {color: inherit !important;text-decoration: none !important;font-size: inherit !important;font-family: inherit !important; font-weight: inherit !important;line-height: inherit !important;}
|
||||
@media only screen and (max-width: 480px) {
|
||||
body[yahoo] .tbContainer { width:100% !important; }
|
||||
body[yahoo] .tdMobHeaderImage { padding-top:30px !important;padding-bottom:0px !important; }
|
||||
body[yahoo] .imgMobSize163x21 { max-width:163px !important; max-height:21px !important;}
|
||||
body[yahoo] .imgMobSize280x58 { max-width:280px !important; max-height:58px !important;}
|
||||
body[yahoo] .BofA_2019_228x23 { max-width:228px !important; max-height:23px !important; padding-left:84px; padding-right:64px}
|
||||
body[yahoo] .imgMobSize70x70 { width:70px !important; height:70px !important;}
|
||||
body[yahoo] .tdMobAlertImage { padding-top:30px !important; padding-bottom:0px !important; }
|
||||
body[yahoo] .tdMobZ1tbl { width:335px !important; display: block !important;}
|
||||
body[yahoo] .tdMobZ1tbl1 { width:335px !important; display: block !important;padding-bottom:30px !important;}
|
||||
body[yahoo] .tdMobZ1tbl2 { width:335px !important; display: block !important;padding-bottom:0px !important;}
|
||||
body[yahoo] .tdMobTitle { display: block !important;font-size:28px !important;padding-bottom:30px !important;}
|
||||
body[yahoo] .tdMobZ1BottomPadding30px { display: block !important;font-size:24px !important;padding-bottom:30px !important; padding-top:30px !important; padding-left:20px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ1 { display: block !important;font-size:24px !important;padding-bottom:0px !important; padding-top:30px !important; padding-left:20px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ1BottomNew { display: block !important;font-size:24px !important;padding-top:30px !important; padding-left:20px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ2tbl { width:335px !important; align:center !important;}
|
||||
body[yahoo] .tdMobZ2 { display: block !important; padding-left:45px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ2TopPadding18px { display: block !important;padding-top:18px !important;padding-left:45px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ2TopPadding30px { display: block !important;padding-top:30px !important;padding-left:45px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobTopPadding0px { display: block !important;padding-top:0px !important;padding-left:45px !important;padding-right:20px !important}
|
||||
body[yahoo] .tdMobZ2tbllabel { display: block !important; font-size:16px !important; padding-bottom:12px !important; line-height:20px !important; text-align:left !important;}
|
||||
body[yahoo] .tdMobZ2tbllabelinline { font-size:16px !important; padding-bottom:12px !important; padding-right:5px !important; line-height:20px !important; text-align:left !important;}
|
||||
body[yahoo] .tdMobZ2tbllabel1 { display: block !important; font-size:16px !important; padding-bottom:12px !important; line-height:20px !important; text-align:left !important; margin-left:10px !important;}
|
||||
body[yahoo] .tdMobZ2tbllabel2 { display: block !important; font-size:16px !important; padding-bottom:0px !important; line-height:20px !important; text-align:left !important;}
|
||||
body[yahoo] .tdMobZ2tbllabel3 { display: block !important; font-size:16px !important; padding-bottom:0px !important; line-height:20px !important; text-align:left !important; width:100% !important;}
|
||||
body[yahoo] .tdMobZ2tbllabel3a { display: block !important; font-size:16px !important; padding-bottom:0px !important; line-height:20px !important; text-align:left !important; width:100% !important; padding-bottom:12px}
|
||||
body[yahoo] .tdMobZ2tbllabel3a1 { display: block !important; font-size:16px !important; padding-bottom:0px !important; line-height:20px !important; text-align:left !important; width:100% !important; padding-bottom:30px}
|
||||
body[yahoo] .tdMobZ2tblData { font-size:16px !important;line-height:20px !important; text-align:left !important;}
|
||||
body[yahoo] .tdMobZ2tblData1 { font-size:16px !important;line-height:24px !important; text-align:left !important; padding-bottom:12px !important;}
|
||||
body[yahoo] .tdMobZ2tblData2 { font-size:16px !important;line-height:24px !important; text-align:left !important; width:175px !important;}
|
||||
body[yahoo] .tdMobZ2atblData2 { font-size:16px !important;line-height:24px !important; text-align:right !important; width:175px !important;}
|
||||
body[yahoo] .tdMobZ2atblData2a { font-size:16px !important;line-height:24px !important; text-align:right !important; width:175px !important; padding-bottom:12px}
|
||||
body[yahoo] .tdMobZ2atblData2a1 { font-size:16px !important;line-height:24px !important; text-align:right !important; width:175px !important; padding-bottom:30px}
|
||||
body[yahoo] .tdMobContentZ2Font { display: block !important;font-size:18px !important;}
|
||||
body[yahoo] .tdMobTitleDetails { display: block !important;font-size:18px !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .zone3-message-img1 { display:block !important; width: 30px !important; height:30px !important;padding-top:0px !important;padding-bottom: 25px !important;padding-left:48px !important;}
|
||||
body[yahoo] .zone3-message-body2 { display:block !important; padding-top:0px !important;padding-bottom: 30px !important;padding-left:15px !important;font-size:14px !important;line-height:18px !important;}
|
||||
|
||||
body[yahoo] .tblMobZ5Content4new1 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:0px !important; padding-top:20px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content4border { width:300px !important; text-align:left !important;border: 1px solid #979797 !important; align:center !important; padding-bottom:0px !important; font-size:16px !important; padding-right:10px; !important;line-height:20px !important;}
|
||||
body[yahoo] .zone3-message-body22 { width:335px !important; text-align:center !important;align:center !important; padding-bottom:0px !important; padding-top:20px !important; padding-left:0px !important; padding-right:0px !important;margin:0px !important;font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .zone3-message-body23 { width:335px !important; text-align:center !important;align:center !important; padding-bottom:20px !important; padding-top:0px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .zone3-message-img11 { display:block !important; width: 17px !important; height:30px !important;padding-top:60px !important;padding-bottom: 25px !important;padding-left:18px !important;}
|
||||
body[yahoo] .tblMobZ5new { width:335px !important;height:114px !important; text-align:center !important;align:center !important; padding-bottom:0px !important;}
|
||||
|
||||
body[yahoo] .tdMobAlertImage33 { padding-top:60px !important; padding-bottom:0px !important;padding-left:30px !important; }
|
||||
|
||||
body[yahoo] .zone4-message-body1 { display:block !important; padding-top:0px !important;padding-bottom: 18px !important;padding-left:18px !important;font-size:16px !important;line-height:20px !important;padding-right:18px !important;}
|
||||
|
||||
body[yahoo] .zone3-message-bodyNew { display:block !important; padding-top:0px !important;padding-bottom: 0px !important;padding-left:15px !important;font-size:14px !important;line-height:18px !important;}
|
||||
body[yahoo] .tblMobZ3 { width:335px !important;text-align:center !important;align:center !important; }
|
||||
body[yahoo] .tdMobZ3TopPadding18px { display: block !important;padding-top:18px !important;}
|
||||
body[yahoo] .tdMobZ3TopPadding30px { display: block !important;padding-top:30px !important;}
|
||||
body[yahoo] .tdMobZ3 { display: block !important;padding-top:0px !important;}
|
||||
body[yahoo] .tdMobBottomPadding30px { display: block !important;padding-bottom:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content1 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:20px !important; }
|
||||
body[yahoo] .tblMobZ3Content1New { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:20px !important; }
|
||||
body[yahoo] .tblMobZ3Content2 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important;padding-top:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content3 { display: list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important;}
|
||||
body[yahoo] .tblMobZ3Content31 { display: list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:12px !important;}
|
||||
body[yahoo] .tblMobZ3Content6 { display: list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important; padding-top:15px !important;}
|
||||
body[yahoo] .tblMobZ3Content4 { display:list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; }
|
||||
body[yahoo] .tblMobZ3Content4New { display:list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:12px !important;}
|
||||
body[yahoo] .tblMobZ3Content5 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important; }
|
||||
body[yahoo] .tblMobZ3Content8 { display:list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:20px !important;}
|
||||
body[yahoo] .tblMobZ3Content7 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:20px !important;}
|
||||
body[yahoo] .tblMobZ3Content9 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content9New4 { display: block !important; font-size:12px !important; line-height:16px !important; text-align:left !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content13 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important; padding-top:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content14 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:30px !important; padding-bottom:12px !important; }
|
||||
body[yahoo] .tblMobZ3Content9New1 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content9New2 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:30px !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content9New3 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:center !important; padding-top:30px !important; padding-bottom:30px!important;}
|
||||
body[yahoo] .tblMobZ3Content9center { display: block !important; font-size:16px !important; line-height:20px !important; text-align:center !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .tblMobZ3Content9Bottom { display: block !important; font-size:16px !important; line-height:22px !important; text-align:center !important; padding-bottom:10px !important;}
|
||||
body[yahoo] .tblMobZ3Content9CenterNoPadding { display: block !important; font-size:16px !important; line-height:22px !important; text-align:center !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content10 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:12px !important; }
|
||||
body[yahoo] .tblMobZ3Content11 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-top:15px !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content51 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:12px !important; padding-left:25px !important; }
|
||||
body[yahoo] .tblMobZ3Content21 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:20px !important; padding-top:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content21New{ display: block !important; font-size:12px !important; line-height:16px !important; text-align:left !important; padding-bottom:20px !important; padding-top:0px !important;}
|
||||
body[yahoo] .tblMobZ3Content52 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important; padding-left:25px !important; }
|
||||
body[yahoo] .bulletTopPadding { display:list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important; padding-top:12px !important;}
|
||||
body[yahoo] .tblMobZ3Bulletpadding { display: block !important; padding-bottom:15px !important; colspan:2 !important;}
|
||||
body[yahoo] .tblMobZ4 { width:335px !important;text-align:center !important;align:center !important;}
|
||||
body[yahoo] .tblMobZ4ButtonPadding { padding-bottom:30px !important; padding-top:30px !important;}
|
||||
body[yahoo] .tblMobZ4ButtonPadding1 { padding-bottom:0px !important; padding-top:18px !important;}
|
||||
body[yahoo] .tblMobZ4ButtonPadding2 { padding-bottom:0px !important; padding-top:30px !important;}
|
||||
body[yahoo] .tdMobButtonZ4 { font-size:20px !important; line-height:45px !important; width:335px !important; border-left:0px solid #0052C2 !important; border-right:0px solid #0052C2 !important; border-top:0px solid #0052C2 !important; border-bottom:0px solid #0052C2 !important; text-align:center !important; align:center !important;}
|
||||
body[yahoo] .tblMobZ5 { width:335px !important;text-align:center !important;align:center !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tblMobZ5Content { width:335px !important; text-align:left !important;align:center !important; padding-bottom:20px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content1 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:10px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content2 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:50px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content3 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:30px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content4 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:0px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content5 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:40px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content6 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:30px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content7 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:40px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content8 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:15px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tdMobAltButtonZ4 { width:335px !important; text-align:left !important;align:center !important; font-size:16px !important; line-height:20px !important; padding-bottom:0px !important; padding-top:20px !important; font-family: Connections Light, Arial !important;}
|
||||
body[yahoo] .tblMobFootnoteZ7 { display: block !important; width:335px !important;text-align:center !important;align:center !important;}
|
||||
body[yahoo] .tdMobFootnoteZ7 { padding-top:20px !important;width:335px !important;font-size:11px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ72 { padding-top:30px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ72Left { padding-top:30px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important; text-align:left !important; margin:0px !important}
|
||||
body[yahoo] .tdMobFootnoteZ73 { padding-top:20px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ74 { padding-top:0px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ75 { padding-top:15px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ76 { padding-top:15px !important; Margin-left:0px !important; padding-bottom:0px !important; max-width:300px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ77 { padding-top:0px !important; padding-bottom:30px !important; width:335px !important;font-size:11px !important; line-height:13px !important;}
|
||||
body[yahoo] .tdMobFootnotetopbottompadding0{ display: block !important; width:335px !important; font-size:16px !important; line-height:20px !important; text-align:center !important; padding-bottom:0px !important; padding-top:0px !important;}
|
||||
body[yahoo] .tdMobFooter { font-size:11px !important;line-height:13px !important;}
|
||||
body[yahoo] .tdMobFooter1 { font-size:11px !important;}
|
||||
body[yahoo] .tdMobFooter2 { font-size:11px !important;line-height:16px !important;}
|
||||
body[yahoo] .tdMobFooter3 { font-size:11px !important;line-height:13px !important; width:335px !important;}
|
||||
body[yahoo] .tdMobFooter4 { font-size:11px !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .tdMobFooterTitle { font-size:15px !important; width:100% !important; max-width:100% !important; padding-bottom:20px !important;}
|
||||
body[yahoo] .tdMobFooterContent { font-size:15px !important; width:100% !important; max-width:100% !important; padding-bottom:20px !important; padding-left:55px !important;}
|
||||
body[yahoo] .tdMobFooterContent2 { font-size:15px !important; width:100% !important; max-width:100% !important; padding-left:55px !important;}
|
||||
body[yahoo] .tdMobFooterContent3 { font-size:15px !important; width:100% !important; max-width:100% !important; padding-bottom:20px !important; padding-left:75px !important;}
|
||||
body[yahoo] .tdMobFooterContent3New { font-size:15px !important; width:100% !important; max-width:100% !important; padding-bottom:20px !important; padding-left:55px !important;}
|
||||
body[yahoo] .tdMobFooterContent4 { font-size:15px !important; width:100% !important; max-width:100% !important; padding-left:75px !important;}
|
||||
body[yahoo] .tdMobFooterContent4New { font-size:15px !important; width:100% !important; max-width:100% !important; padding-left:55px !important;}
|
||||
body[yahoo] .imgMobContainerZ6 { width:40px !important; height:40px !important; padding-right:15px !important; }
|
||||
body[yahoo] .imgMobContainerZ6New { width:40px !important; height:40px !important; padding-right:15px !important; margin-top:0px !important;}
|
||||
body[yahoo] .imgMobContainerZ7 { width:30px !important; height:30px !important; padding-right:15px !important; }
|
||||
body[yahoo] .tdMobHr { display: block !important;width:335px !important; }
|
||||
body[yahoo] .tdMobZ6 { display: block !important; width:100% !important;text-align:center !important;align:center !important; float:center !important;}
|
||||
body[yahoo] .tblMobContainerTableZ6 { width:100% !important; text-align:center !important;align:center !important;}
|
||||
body[yahoo] .tdMobZ62 { display: block !important; width:335px !important;text-align:center !important;align:center !important; float:center !important;}
|
||||
body[yahoo] .tblMobContainerTableZ62 { width:335px !important; text-align:center !important;align:center !important;}
|
||||
body[yahoo] .tdMobTopPadding40px { padding-top:40px !important;}
|
||||
body[yahoo] .tdMobContentHr { display: block !important;}
|
||||
body[yahoo] .tdDeskHr { display: none !important; }
|
||||
body[yahoo] .tdDeskContentHr { display: none !important; }
|
||||
body[yahoo] .tdMobContainerZ6description1 { width:100% !important; max-width:100% !important; }
|
||||
body[yahoo] .tdMobContainerZ6description2 { width:100% !important; max-width:100% !important; }
|
||||
body[yahoo] .tdMobZ3 { width:335px !important; max-width:100% !important; }
|
||||
body[yahoo] .tdMobButtonZ3 { font-size:20px !important; line-height:45px !important; width:320px !important; border-left:0px solid #0052C2 !important; border-right:0px solid #0052C2 !important; border-top:0px solid #0052C2 !important; border-bottom:0px solid #0052C2 !important; text-align:center !important; align:center !important;}
|
||||
body[yahoo] .imgDeskDisp { display:none !important; }
|
||||
body[yahoo] .title-spacer { width:10px !important; align:top !important;}
|
||||
body[yahoo] .footer-class { padding-left:45px !important; padding-right:45px !important; padding-top:40px !important;}
|
||||
body[yahoo] .footer-class1 { padding-left:45px !important; padding-right:45px !important; padding-top: 50px !important;}
|
||||
body[yahoo] .footer-class2 { padding-left:65px !important; padding-right:65px !important;}
|
||||
body[yahoo] .bullet-list { padding-left:18px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd18 table { width:56px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd19 { width:56px !important; }
|
||||
body[yahoo] .zone2-data-table-Bamd22{ padding-left:20px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd29a table { width:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd30 table { width:7px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd31 { width:42px !important; height:14px !important; font-size:11px !important; line-height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd1 { width:07px !important; height:7px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd1a { width:03px !important; height:7px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd1b img{ width:03px !important; height:7px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd2 { width:49px !important; height:6px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd2a img{ width:47px !important; height:6px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd3a { width:14px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd4 { width:07px !important; height:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd4a { width:03px !important; height:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd4c img{ width:07px !important; height:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd4b img{ width:03px !important; height:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd5a { width:42px !important; height:42px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd5 img { width:100% !important; height:100% !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd12 { width:7px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd12a img { width:7px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd14 { width:3px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd14a img{ width:3px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd17 { width:3px !important; height:72px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd17a img { width:1px !important; height:72px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd21 { width:3px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd21a img { width:3px !important; height:14px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd24 { width:7px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd24a img{ width:7px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd28 { width:42px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd28a img{ width:42px !important; height:07px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd32a img{ width:3px !important; height:09px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd32 { width:3px !important; height:09px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd35 { width:56px !important; height:09px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd35a img{ width:56px !important; height:09px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd36 { width:7px !important; height:09px !important;}
|
||||
body[yahoo] .zone2-data-table-Bamd36a img{ width:7px !important; height:09px !important;}
|
||||
body[yahoo] .tblMobZ2Content { width:335px !important; text-align:left !important;align:center !important; padding-bottom:30px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tdMobZ5tblData-BA360 { font-size:16px !important;line-height:20px !important; text-align:left !important;}
|
||||
body[yahoo] .tblMobZ5Content-BA360 { text-align:left !important;align:center !important; padding-bottom:12px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content-BA360-zone1fontsize { text-align:left !important;align:center !important; padding-bottom:12px !important; font-size:24px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content-BA360-1 { text-align:left !important;align:center !important; padding-bottom:10px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5Content-BA360-2 { text-align:left !important;align:center !important; padding-bottom:20px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5aContent-BA360 { text-align:right !important;align:center !important; padding-bottom:12px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5aContent-BA360-1 { text-align:right !important;align:center !important; padding-bottom:10px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .tblMobZ5TopPadding-BA360 { padding-top:20px !important;}
|
||||
body[yahoo] .tblMobZ3ButtonPadding-BA360 { padding-bottom:10px !important;}
|
||||
body[yahoo] .zone1padding1 { display: block !important;font-size:24px !important;padding-bottom:30px !important; padding-top:0px !important; padding-left:0px !important;padding-right:0px !important;line-height:28px !important;}
|
||||
body[yahoo] .zone1padding2 {display: block !important;font-size:24px !important;padding-bottom:0px !important; padding-top:30px !important; padding-left:0px !important;padding-right:0px !important;line-height:28px !important;}
|
||||
body[yahoo] .tblMobZ3Content12 { display: list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:12px !important;}
|
||||
body[yahoo] .tblMobZ3Content12a { display: list-item !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tdMobz1width { font-size:20px !important; height:30px !important; width:320px !important; border-left:0px solid #FFFFFF !important; border-right:0px solid #FFFFFF !important; border-top:0px solid #FFFFFF !important; border-bottom:0px solid #FFFFFF !important; text-align:center !important; align:center !important;}
|
||||
body[yahoo] .tdMobTitleDetailsBottom0px { display: block !important;font-size:18px !important; padding-bottom:0px !important;}body[yahoo] .tdMobTitleDetailsBottom0px { display: block !important;font-size:18px !important; padding-bottom:0px !important;}
|
||||
body[yahoo] .tdMobAlertIcon { display: block !important;width:335 !important; padding-top:30px !important; padding-bottom:0px !important; }
|
||||
body[yahoo] .dataTableColumn1 { font-size:13px !important;padding-top:10px !important; padding-bottom:10px !important;}
|
||||
body[yahoo] .dataTableColumn2 { font-size:16px !important;padding-bottom:10px !important;}
|
||||
body[yahoo] .dataTableColumn2OneValue { font-size:16px !important;padding-top:10px !important; padding-bottom:10px !important;}
|
||||
body[yahoo] .dataTableTotalVerbiage { padding-top:10px !important; padding-bottom:10px !important;padding-left:10px !important;}
|
||||
body[yahoo] .dataTableTotalValue { padding-top:10px !important; padding-bottom:10px !important;padding-right:10px !important;}
|
||||
body[yahoo] .tblMobZ2Content1 { width:335px !important; text-align:left !important;align:center !important; padding-bottom:0px !important; font-size:16px !important; line-height:20px !important;}
|
||||
body[yahoo] .BofA_2019_70x70 { max-width:70px !important; align:center !important; max-height:70px !important; padding-left:133px; padding-right:132px}
|
||||
body[yahoo] .tblMobZ1topbottompadding30{ display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:30px !important; padding-top:30px !important;}
|
||||
body[yahoo] .tblMobZ2Contenttoppadding0 { display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:30px !important;padding-top:0px !important; }
|
||||
body[yahoo] .tblMobZ1topbottompadding0{ display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:0px !important; padding-top:0px !important;}
|
||||
body[yahoo] .drop-down-data { display:block !important; width: 100% !important; float:left; clear:both;}
|
||||
body[yahoo] .tblMobBrandingZ5 { display: block !important; text-align:center !important;align:center !important;padding-bottom:0px !important;}
|
||||
body[yahoo] .imgMobBrandingZ5img { width:189px !important;height:14px !important;align:center !important;padding-bottom:50px !important;}
|
||||
body[yahoo] .imgMobBrandingZ5 { max-width:189px !important; max-height:14px !important; padding-bottom:0px !important; padding-top:0px !important;}
|
||||
body[yahoo] .title-spacer1 { width:95px !important; align:right !important; }
|
||||
body[yahoo] .tblMobZ1zone1padding{ display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important; padding-top:30px !important;}
|
||||
body[yahoo] .tblMobZ1zone1padding1{ display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important; padding-top:15px !important;}
|
||||
body[yahoo] .tblMobZ1zone1padding2{ display: block !important; font-size:16px !important; line-height:20px !important; text-align:left !important; padding-bottom:15px !important; padding-top:0px !important;}
|
||||
body[yahoo] .tdMobFootnoteZ72Left { padding-top:30px !important; padding-bottom:0px !important; width:335px !important;font-size:11px !important; line-height:13px !important; text-align:left !important;}
|
||||
body[yahoo] .tdMobFootnoteZ72Left2 { padding-top:30px !important; padding-bottom:10px !important; width:335px !important;font-size:11px !important; line-height:13px !important; text-align:left !important;}
|
||||
body[yahoo] .zone3-message-body3 { display:block !important; padding-top:0px !important;padding-bottom: 0px !important;padding-left:15px !important;font-size:14px !important;line-height:18px !important;}
|
||||
body[yahoo] .bamd-spacer { width:4px !important; height:119px !important;}
|
||||
body[yahoo] .bamd-spacerimg img { width:4px !important; height:119px !important;}
|
||||
body[yahoo] .tblMobZ3Content9Right { font-size:16px !important;line-height:24px !important; text-align:right !important; padding-bottom:30px !important;}
|
||||
body[yahoo] .tdMobZ2tblDataRight { font-size:16px !important;line-height:20px !important; text-align:right !important;}
|
||||
body[yahoo] .zone3-message-body3 { display:block !important; padding-top:0px !important;padding-bottom: 10px !important;padding-left:15px !important;font-size:14px !important;line-height:18px !important;}
|
||||
body[yahoo] .tdMobBottomPadding40px { padding-bottom:40px !important;}
|
||||
body[yahoo] .tdMobTopPadding0px { padding-top:0px !important;}
|
||||
body[yahoo] .tdMobZ2tbl2 { width:275px !important; align:center !important;}
|
||||
body[yahoo] .tdwidth { width:125px !important; }
|
||||
}
|
||||
@media only screen and (max-width: 640px) {
|
||||
body[yahoo] .tbContainer { width:100% !important; }
|
||||
}
|
||||
@media only screen and (min-width: 481px) {
|
||||
body[yahoo] .imgMobDisp { display:none !important; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="#ffffff" text="#000000" style="background-color: #FFFFFF; color: #000000; margin: 0px; padding:0px; -webkit-text-size-adjust:none;" yahoo="fix">
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="600" class="tbContainer" align="center">
|
||||
<tr>
|
||||
<td>
|
||||
<table cellspacing="0" cellpadding="0" border="0" bordercolor="#000000" bgcolor="#ffffff" width="100%">
|
||||
<!-- Zone 00 - Bofa Image Header - Begins -->
|
||||
<tr>
|
||||
<td align="center" valign="top">
|
||||
<table cellpadding="0" cellspacing="0" border="0" mcdisabled-bordercolor="" width="100%" mcdisabled-bgcolor="">
|
||||
<tr>
|
||||
<td valign="top" align="center">
|
||||
<table width="100%" bgcolor="#ffffff" border="0" mcdisabled-bordercolor="" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td class="tdMobHeaderImage" style="text-align:center;padding-top:30px;padding-bottom:0px;padding-left:10px;margin:0px;valign:top;">
|
||||
<img class="BofA_2019_228x23" id="image-top-bofa" src="https://www.bankofamerica.com/content/images/ContextualSiteGraphics/Logos/en_US/BofA_2019_307x31.png" border="0" alt="Bank of America." height="31px" width="307px">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Zone 00 - Bofa Image Header - Ends-->
|
||||
<tr>
|
||||
<td align="center" valign="top">
|
||||
<table cellpadding="0" cellspacing="0" width="100%" role="presentation" style="min-width: 100%; " class="stylingblock-content-wrapper"><tr><td class="stylingblock-content-wrapper camarker-inner"><table cellpadding="0" cellspacing="0" width="100%" role="presentation" style="min-width: 100%; " class="stylingblock-content-wrapper"><tr><td class="stylingblock-content-wrapper camarker-inner"><table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
<td align="center" valign="top">
|
||||
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
||||
<tr>
|
||||
</tr></table><table class="tdMobZ1tbl2" align="center" bgcolor="#ffffff" border="0" bordercolor="" cellpadding="0" cellspacing="0">
|
||||
<!-- Zone1 - Begins-->
|
||||
<tr>
|
||||
<td class="tdMobAlertImage" style="text-align:center;padding-top:40px;padding-bottom:0px;margin:0px;valign:top;">
|
||||
<img class="imgMobSize70x70" id="image-Zone1" src="https://www.bankofamerica.com/content/images/ContextualSiteGraphics/Merchant/awareness_red_105x105.png" border="0" alt="" height="105px" width="105px">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- tdMobZ1BottomNew-->
|
||||
<td class="tdMobZ1BottomPadding30px" valign="top" align="top" style="font-size:36px; font-family: Connections, arial; color:#000000; padding-bottom:40px;padding-top:40px; float:center; text-align:center; valign:top;">
|
||||
Credit card transaction <br>exceeds alert limit you set
|
||||
</td>
|
||||
</tr>
|
||||
<!--horizontal line begins mob view-->
|
||||
<tr>
|
||||
<td class="tdMobHr" style="display:none; mso-table-lspace:0pt; mso-table-rspace:0pt;mso-hide:all; padding-top:0px; padding-bottom:0px;">
|
||||
<table cellpadding="0" cellspacing="0" border="0" style="background-color:#FFFFFF; mso-table-lspace:0pt; mso-table-rspace:0pt;mso-hide:all;">
|
||||
<tr>
|
||||
<td class="tdMobContentHr" width="335px" style="display:none; font-size:1px; height:1px; mso-table-lspace:0pt; mso-table-rspace:0pt;mso-hide:all;" colspan="2" bgcolor="#D3D3D3" height="1"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!--horizontal line mob view ends-->
|
||||
<!--horizontal line begins desktop view-->
|
||||
<tr>
|
||||
<td>
|
||||
</td></tr><tr>
|
||||
<td class="tdDeskHr" style="display:block; padding-top:0px; padding-bottom:0px; mso-table-lspace:0pt; mso-table-rspace:0pt;mso-hide:all;" colspan="2"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tdDeskContentHr" width="600" style="display:block; font-size:1px; height:1px; mso-table-lspace:0pt; mso-table-rspace:0pt;mso-hide:all;" colspan="2" bgcolor="#D3D3D3" height="1"></td>
|
||||
</tr>
|
||||
|
||||
|
||||
<!--horizontal line desktop view ends-->
|
||||
<!-- Zone1 - Ends-->
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td style="padding-top:0px;">
|
||||
<!-- Zone2 Begins -->
|
||||
<table class="tdMobZ2tbl" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
|
||||
|
||||
|
||||
|
||||
<tr>
|
||||
<td class="tdMobZ2TopPadding30px" style="padding-bottom:0px; padding-top:40px">
|
||||
<!-- Zone 2 Data table - Begins -->
|
||||
<table class="tdMobZ2tbl" style="margin-right:25px" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="Left">
|
||||
<tr>
|
||||
<td class="tblMobZ3Content5" style="line-height:32px; mso-line-height-rule: exactly;padding-bottom:40px; padding-right:0px;font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000; " valign="top">
|
||||
National Education Association World Mas<b> ending in 7522</b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- Zone 2 Data table - Ends -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tdMobZ2TopPadding30px" style="padding-bottom:0px; padding-top:0px">
|
||||
<!-- Zone 2 Data table - Begins -->
|
||||
<table class="tdMobZ2tbl" style="margin-right:25px" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="Left">
|
||||
<tr>
|
||||
<td class="tdMobZ2tbllabel2" style="line-height:32px; mso-line-height-rule: exactly;padding-bottom:0px; padding-right:0px;font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000; " valign="top">
|
||||
Amount:
|
||||
</td>
|
||||
<td class="tdMobZ2tblData" style="mso-line-height-rule: exactly;line-height:32px; padding-bottom:0px; padding-left:20px; font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000;" valign="top">
|
||||
<b>$21.48</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<td class="tdMobZ2tbllabel2" style="line-height:32px; mso-line-height-rule: exactly;padding-bottom:0px; padding-right:0px;font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000; " valign="top">
|
||||
Date:
|
||||
</td>
|
||||
<td class="tdMobZ2tblData" style="mso-line-height-rule: exactly;line-height:32px; padding-bottom:0px; padding-left:20px; font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000;" valign="top">
|
||||
<b>November 22, 2024</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tdMobZ2tbllabel2" style="line-height:32px; mso-line-height-rule: exactly;padding-bottom:0px; padding-right:0px;font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000; " valign="top">
|
||||
Where:
|
||||
</td>
|
||||
<td class="tdMobZ2tblData" style="mso-line-height-rule: exactly;line-height:32px; padding-bottom:0px; padding-left:20px; font-family: Connections Light, arial; font-weight:normal; text-align:left; font-size:22px; color:#000000;" valign="top">
|
||||
<b>PP SPOTIFYUSAI</b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!-- Zone 2 Data table - Ends -->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
<!-- Zone2 - Ends-->
|
||||
|
||||
<tr><td style="padding-top:0px;">
|
||||
<!-- Zone 3 Table - Begins -->
|
||||
<table class="tblMobZ3" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
<tr>
|
||||
|
||||
<td class="tdMobHeaderImage" style="padding-bottom:0px;padding-top:40px" align="center">
|
||||
<table>
|
||||
<!-- Primary CTA Button - Begins-->
|
||||
<tr>
|
||||
<td class="tdMobButtonZ4" align="center" bgcolor="#0052C2" style="mso-padding-alt: 10px 40px;">
|
||||
<a class="tdMobButtonZ4" href="https://www.bankofamerica.com/deeplink/redirect.go?target=bofasignin&screen=Accounts:Home&version=7.0.0" style="font-family: Connections,arial;font-size:30px; color:#FFFFFF; display: inline-block;border-left:0px solid #0052C2; border-right:0px solid #0052C2; border-top:0px solid #0052C2; border-bottom: 0px solid #0052C2; background-color:#0052C2; line-height:68px; width:240px; text-decoration:none;-webkit-text-size-adjust:none;" aria-label="View details">
|
||||
View details</a>
|
||||
</td>
|
||||
<!-- Primary CTA Button - Ends -->
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<!-- Zone 3 Table - Ends -->
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<table class="tblMobZ3" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
<!-- Zone4 - Begins -->
|
||||
<tr>
|
||||
<td class="tdMobZ3TopPadding30px tblMobZ3Content5" style="font-family: Connections, arial; font-weight:normal;text-align:left;padding-top:40px; padding-bottom:0px; padding-left: 0px; font-size:22px; line-height:28px; color:#000000;" valign="bottom" align="left">
|
||||
If you made this purchase or payment but don't recognize the amount, wait until the final purchase amount has posted before filing a dispute claim.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<!-- Zone4 - Ends -->
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="tblMobZ3" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
<!-- Zone5 - Begins -->
|
||||
<tr>
|
||||
<td class="tblMobZ1topbottompadding30" style="font-family: Connections, arial; font-weight:normal;text-align:left;padding-top:40px; padding-bottom:0px; padding-left: 0px; font-size:22px; line-height:28px; color:#000000;" valign="bottom" align="left">
|
||||
If you don't recognize this activity, contact us at the number on the back of your card.
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Zone5 - Ends -->
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="tblMobZ3" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
<!-- Zone6 - Begins -->
|
||||
|
||||
|
||||
<!-- Zone6 - Ends -->
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- footer - Begins -->
|
||||
<tr>
|
||||
<td>
|
||||
<table class="tblMobZ3" width="100%" valign="bottom" cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" align="center">
|
||||
<tr>
|
||||
<td class="" colspan="2" style="padding-bottom:0px; padding-top:0px; font-family: Connections, arial; font-weight:normal; text-align:left; font-size:22px; line-height:28px; color:#000000;" valign="bottom" align="left">
|
||||
<footer>
|
||||
<table cellpadding="0" cellspacing="0" width="100%" role="presentation" style="min-width: 100%; " class="stylingblock-content-wrapper"><tr><td class="stylingblock-content-wrapper camarker-inner"><table class="footer-class" align="center" border="0" width="100%">
|
||||
<tr>
|
||||
<td style="padding:40px 55px 0px 55px">
|
||||
<table align="center" border="0" width="100%">
|
||||
<tr>
|
||||
<td class="tdMobFooter" width="" valign="bottom" align="top" style="font-size:13px; font-family: Connections, arial; font-weight:Regular; color:#666666;padding-left:0px; padding-right:0px; padding-bottom:8px; padding-top:0px; line-height:18px;float:center; text-align:center; valign:top;">
|
||||
We'll never ask for your personal information such as SSN or ATM PIN in email messages. If you get an email that looks suspicious or you are not the intended recipient of this email, don't click on any links. Instead, forward to <a href="#" aria-label="abuse@bankofamerica.com" style="pointer-events: none; cursor: default;color: #666666; text-decoration: none; ">abuse@bankofamerica.com</a> then delete it.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tdMobFooter1" width="" valign="bottom" align="top" style="font-size:13px; font-family: Connections, arial; font-weight:Regular; color:#666666;padding-left:0px; padding-right:0px; padding-bottom:8px; padding-top:0px; float:center; text-align:center; valign:top;">
|
||||
Please don't reply to this automatically generated service email.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table align="center" border="0">
|
||||
<tr>
|
||||
<td class="tdMobFooter2New" style="font-family: Connections, arial; font-weight:Regular; text-align:left; font-size:13px; color:#0052C2; padding-bottom:8px; line-height:18px; padding-left:20px; padding-right:20px;">
|
||||
<a href="https://www.bankofamerica.com/privacy/consumer-privacy-notice.go" name="privacy_notice" style="text-decoration:none;color:#0052C2" aria-label="Privacy Notice">Privacy Notice</a><span style="color:#000000;"></span>
|
||||
</td>
|
||||
<td class="tdMobFooter2New" style="font-family: Connections, arial; font-weight:Regular; text-align:left; font-size:13px; color:#0052C2; padding-bottom:8px; line-height:18px; padding-left:20px; padding-right:20px;">
|
||||
<a href="https://www.bankofamerica.com/help/equalhousing.cfm" name="equal_housing_lender" style="text-decoration:none;color:#0052C2" aria-label="Equal Housing Lender">Equal Housing Lender <img src="https://www.bankofamerica.com/content/images/ContextualSiteGraphics/alerts/desktop_icon_equalhousing.png" style="border:none"></a><br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="300" align="center" border="0">
|
||||
<tr>
|
||||
<td class="tdMobFooter2" width="" valign="bottom" align="top" style="line-height:16px; font-size:13px; font-family: Connections, arial; font-weight:Regular; color:#666666;padding-left:0px; padding-right:0px; padding-bottom:0px; padding-top:0px; float:center; text-align:center; valign:top;">
|
||||
Bank of America, N.A. Member FDIC.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table width="300" align="center" border="0">
|
||||
<tr>
|
||||
<td class="tdMobFooter2" width="" valign="bottom" align="top" style="line-height:16px; font-size:13px; font-family: Connections, arial; font-weight:Regular; color:#666666;padding-left:0px; padding-right:0px; padding-bottom:20px; padding-top:0px; float:center; text-align:center; valign:top;">
|
||||
© 2024 Bank of America Corporation.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td></tr></table>
|
||||
</footer>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- footer - Ends -->
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td></tr></table>
|
||||
|
||||
|
||||
|
||||
</td></tr></table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<img src="http://click.ealerts.bankofamerica.com/open.aspx?ffcb10-fe7e12797d6d07787c-fdf41571736402787c117570-fe3c11727764047d741479-fec61574706c057b-fdf5157470630d7471167175-fec415797260007f&bmt=0" width="1" height="1" alt="">
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
|
||||
Credit card transaction exceeds alert limit you set
|
||||
|
||||
National Education Association World Mas ending in 7522
|
||||
|
||||
Amount: $75=2E08
|
||||
Date: September 05, 2021
|
||||
Where: PAYPAL GIBBDOGENTE MA
|
||||
|
||||
View details by going to
|
||||
https://www=2Ebankofamerica=2Ecom/deeplink/redirect=2Ego?target=3Dbofasigni=
|
||||
n&screen=3DAccounts:Home&version=3D7=2E0=2E0
|
||||
|
||||
If you made this purchase or payment but don=27t recognize the amount,
|
||||
wait until the final purchase amount has posted before filing a dispute
|
||||
claim=2E
|
||||
|
||||
If you don=27t recognize this activity, please contact us at the number
|
||||
on the back of your card=2E
|
||||
|
||||
Did you know?
|
||||
You can choose how you get alerts from us including text messages and
|
||||
mobile notifications=2E Go to Alert Settings at
|
||||
https://www=2Ebankofamerica=2Ecom/deeplink/redirect=2Ego?target=3Dalerts_se=
|
||||
ttings&screen=3DAlerts:Home&gotoSetting=3Dtrue&version=3D7=2E1=2E0
|
||||
|
||||
|
||||
We'll never ask for your personal information such as SSN or ATM PIN in
|
||||
email messages=2E If you get an email that looks suspicious or you are not =
|
||||
|
||||
the intended recipient of this email, don't click on any links=2E Instead, =
|
||||
|
||||
forward to abuse@bankofamerica=2Ecom then delete it=2E
|
||||
|
||||
Please don't reply to this automatically generated service email=2E
|
||||
Read our Privacy Notice https://www=2Ebankofamerica=2Ecom/privacy/consumer-=
|
||||
privacy-notice=2Ego
|
||||
Equal Housing Lender: https://www=2Ebankofamerica=2Ecom/help/equalhousing=
|
||||
=2Ecfm
|
||||
Bank of America, N=2EA=2E Member FDIC
|
||||
(C) 2021 Bank of America Corporation
|
||||
|
||||
|
||||
|
||||
=20
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a4f:f556:0:0:0:0:0 with SMTP id s22csp88584ivo;
|
||||
Fri, 10 Sep 2021 03:09:37 -0700 (PDT)
|
||||
X-Google-Smtp-Source: ABdhPJy5KOCCQILLhifnSPNnjMikzSGgZX0rSLKqSzdRkpjWyZAZB7Ml4gWSWxuiMPuJMUFQZPnF
|
||||
X-Received: by 2002:a05:620a:15e8:: with SMTP id p8mr6940748qkm.27.1631268577237;
|
||||
Fri, 10 Sep 2021 03:09:37 -0700 (PDT)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1631268577; cv=none;
|
||||
d=google.com; s=arc-20160816;
|
||||
b=fRiwZLXmORGlNgDHdYZ3g7DbcggjP3zVkUX1gIVHo3z/c4SLgmwu1FVu4qiUr7M2+6
|
||||
9Ez7xjq0rG3JCLUk77q4I2MJW9pWL5LZdcMtoP9bbu5KYoZ0JwLQldFuzUOFp1qyLICc
|
||||
pegPsozU1lTG3WSr2fxAi4kGgvr1PQUGd5EaeztK+u7I9SNyyOdXsgavbx0Dr+XLFAyG
|
||||
eGo1WzDGy7NG8TMstFxQu+cfZiWKKtEeTFUGEjcXAUxCm/jvqK8MT1fPTwac9c66cCls
|
||||
7bvBpXlmoSEmTz6NseH0DblgWZsdmGgkYZhIUS2cJaqIhGJUFxNqbMQswEXT29LrmnbG
|
||||
zz0w==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
|
||||
h=content-transfer-encoding:feedback-id:message-id:list-id:reply-to
|
||||
:mime-version:date:subject:to:from:dkim-signature;
|
||||
bh=RNAxijcTyDxYmdzbEHMEKXkbCbc/Wnnsez0HenNHbUA=;
|
||||
b=KtJdTZ9LFxfJTwq0gldceho7ktEybby+DLrKgjgjI2yUlaS4u0IJC2nDvkA21HjV1w
|
||||
R2HMT4UITrQVoi9xa/fTsbdVIfEDjBl2rdbvO+gOthaonsCvxAsiQGFRPhmKHlbb1IiE
|
||||
9GbgjYaf4qEZCO4nQUnMKTQPK+TalO1pX3UNPHf2/KTeAuXCUrySVKgierhZIxnkS3WQ
|
||||
/GUsV4gDHMhmRKEQF8yxgLv3podfCm63iOBgOZ/CCITcKkQTFUByLQ2HdAmLo9TUXHNM
|
||||
sJKv6pK7e05Dxp4ZeNKlm15c5xSo3OXoRqupvsXYCbzjvR2moBrVRSB7iwZHGL45zQXQ
|
||||
OVug==
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@ealerts.bankofamerica.com header.s=200608 header.b=niVgyX92;
|
||||
spf=pass (google.com: domain of bounce-29_html-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com designates 68.232.194.2 as permitted sender) smtp.mailfrom=bounce-29_HTML-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bankofamerica.com
|
||||
Return-Path: <bounce-29_HTML-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com>
|
||||
Received: from mta5.ealerts.bankofamerica.com (mta5.ealerts.bankofamerica.com. [68.232.194.2])
|
||||
by mx.google.com with ESMTPS id a7si3031949qtn.85.2021.09.10.03.09.36
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Fri, 10 Sep 2021 03:09:37 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: domain of bounce-29_html-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com designates 68.232.194.2 as permitted sender) client-ip=68.232.194.2;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@ealerts.bankofamerica.com header.s=200608 header.b=niVgyX92;
|
||||
spf=pass (google.com: domain of bounce-29_html-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com designates 68.232.194.2 as permitted sender) smtp.mailfrom=bounce-29_HTML-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bankofamerica.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=200608; d=ealerts.bankofamerica.com;
|
||||
h=From:To:Subject:Date:MIME-Version:Reply-To:List-ID:X-CSA-Complaints:
|
||||
Message-ID:Content-Type:Content-Transfer-Encoding;
|
||||
i=onlinebanking@ealerts.bankofamerica.com;
|
||||
bh=RNAxijcTyDxYmdzbEHMEKXkbCbc/Wnnsez0HenNHbUA=;
|
||||
b=niVgyX923ETmQwhHEaUcs91DEv/nznIH0c7CyqIgwu0h5KtgJZIKbkIw3inZNwLL9hF+/7lfV57q
|
||||
ZYXmHQVV1aXIqJLQDD5RlAq2YZvghgLdglRBbq5N9cCDTsKIA3VlrKicwN+sAwDq2JlfBv4I8rzw
|
||||
Vcmfup5eqf0vJnn6k9c=
|
||||
Received: by mta5.ealerts.bankofamerica.com id h7cne22fmd4j for <breellocaldev@gmail.com>; Fri, 10 Sep 2021 10:09:35 +0000 (envelope-from <bounce-29_HTML-819616257-1667962-73720-2833596@bounce.ealerts.bankofamerica.com>)
|
||||
From: "Bank of America" <onlinebanking@ealerts.bankofamerica.com>
|
||||
To: <breellocaldev@gmail.com>
|
||||
Subject: Confirmation: Thanks for Your Credit Card Payment
|
||||
Date: Fri, 10 Sep 2021 04:09:32 -0600
|
||||
MIME-Version: 1.0
|
||||
Reply-To: "Bank of America" <reply-fe8a157673630d7b77-29_HTML-819616257-73720-2833596@ealerts.bankofamerica.com>
|
||||
List-ID: <71108.xt.local>
|
||||
X-CSA-Complaints: whitelistcomplaints@eco.de
|
||||
x-job: 73720_1667962
|
||||
Message-ID: <3fb2377b-699b-411c-9ea5-a3b8817aa853@las1s04mta1081.xt.local>
|
||||
Feedback-ID: 73720:1667962:68.232.194.2:sfmktgcld
|
||||
Content-Type: text/plain;
|
||||
charset="iso-8859-1"
|
||||
Content-Transfer-Encoding: 7bit
|
||||
|
||||
Hi, BEL, we've received your credit card payment
|
||||
|
||||
Payment: $251.74
|
||||
To: National Education Association World Mas ending in - 7522
|
||||
Date posted: September 09, 2021
|
||||
|
||||
Sign in to bankofamerica.com to view your account details.
|
||||
|
||||
Thank you for being our customer.
|
||||
|
||||
We'll never ask for your personal information such as SSN or ATM PIN in
|
||||
email messages. If you get an email that looks suspicious or you are
|
||||
not the intended recipient of this email, don't click on any links.
|
||||
Instead, forward to abuse@bankofamerica.com then delete it.
|
||||
|
||||
Please don't reply to this automatically generated service email.
|
||||
Read our Privacy Notice https://www.bankofamerica.com/privacy/consumer-privacy-notice.go
|
||||
Equal Housing Lender: https://www.bankofamerica.com/help/equalhousing.cfm
|
||||
Bank of America, N.A. Member FDIC
|
||||
(C) 2019 Bank of America Corporation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,408 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" />
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1.=
|
||||
0"/>
|
||||
<title>This payment has been applied to your account.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass =
|
||||
td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table align=3D"center" width=3D"100%" border=3D"0" cellspacing=3D"0" cellp=
|
||||
adding=3D"0" style=3D"min-width:800px; background-color:#d7dbe0;" class=3D"=
|
||||
fullWidth">
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding:0px 0px 20px =
|
||||
0px; min-width:800px; background-color:#d7dbe0;" class=3D"fullWidth"><table=
|
||||
align=3D"center" width=3D"800" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0" class=3D"fullWidth" style=3D"background-color:#FFFFFF;">
|
||||
<!-- Start of Content -->
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 23px 0=
|
||||
px 0px;background-color: #005EB8;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:bottom; padding=
|
||||
:0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/=
|
||||
images/blue-left.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:bottom; paddin=
|
||||
g: 0px 0px 0px;width:616px; background-color: #FFFFFF;"><table width=3D"100=
|
||||
%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #ffffff;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<!-- Start hidden preview text -->
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;">This payment has been applied to your account.</div>
|
||||
|
||||
<!-- Insert ‌ after hidden preview tex=
|
||||
t -->
|
||||
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;"> ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; </div>
|
||||
<!-- End hidden preview text -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding-left: 30px; background-color: #ffffff;" class=3D"moPad"><table widt=
|
||||
h=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:bottom; padding:36px 0px 20px;"><img src=3D"https://www.chase.com/content=
|
||||
/dam/email/images/chase-logo-h-rgb.png" width=3D"104" height=3D"20" border=
|
||||
=3D"0" style=3D"display:block;" alt=3D"Chase Logo"/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 20px 28px 0px;" class=3D"moPad"><table align=3D"left" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top;"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D=
|
||||
"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:5px 10px; font-family:Arial, Helvetica, sans-serif; fo=
|
||||
nt-size:12px; font-weight:bold; color:#000000; background-color:#24e16b; bo=
|
||||
rder-radius:20px; -moz-border-radius: 20px; -webkit-border-radius:20px; whi=
|
||||
te-space: nowrap;" class=3D"font14">Payment received</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
background-color: #ffffff;"><table width=3D"100%" cellpadding=3D"0" cellsp=
|
||||
acing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding: 20px 30px 28px;" class=3D"moPad"><table width=3D"100%" cell=
|
||||
padding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding: 0px 20px 0px 0px;"><img src=3D"https://static.chasecd=
|
||||
n.com/content/services/rendition/image.small.png/unified-assets/digital-car=
|
||||
ds/chase-freedom/41473417013.png" width=3D"57" height=3D"auto" alt=3D"" bo=
|
||||
rder=3D"0" style=3D"display:block;"/></td>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:0px 50px 0px 0px; font-family:Arial, Helvetica, sans-s=
|
||||
erif; font-size:30px; font-weight: bold; color:#414042;" class=3D"zeroPad">=
|
||||
We've received your credit card payment</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:bottom; padding:=
|
||||
0px 0px;width:12px; "><img src=3D"https://www.chase.com/content/dam/email/i=
|
||||
mages/blue-right.jpg " width=3D"12" height=3D"226" border=3D"0" style=3D"di=
|
||||
splay:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 0px 0p=
|
||||
x 0px; background-color: #FFFFFF;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:top; padding:0p=
|
||||
x 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/ima=
|
||||
ges/white-left.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: =
|
||||
0px 0px 0px;width:616px;"><table width=3D"100%" cellpadding=3D"0" cellspaci=
|
||||
ng=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:0px 150px 20px 30px; font-family:Arial, Helvetica, sans-serif; font-size=
|
||||
:16px; color:#414042;" class=3D"moPad">This payment has been applied to you=
|
||||
r account.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 150px 0px 30px;" class=3D"moPad"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Account</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Chase Fr=
|
||||
eedom Unlimited (...1049)</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Posted date</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Dec 9, 2=
|
||||
021</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Payment amount</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14"><span cl=
|
||||
ass=3D"applelinksgray41"><a style=3D"color:#414042;text-decoration: none;">=
|
||||
$1,750.00</a></span></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:40px 150px 40px 30px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:16px; color:#414042;" class=3D"moPad">Find <a style=3D"text-decoration: u=
|
||||
nderline; color:#0060F0;" href=3D"https://www.chase.com/personal/credit-car=
|
||||
ds/login-epay" rel=3D"noopener noreferrer" target=3D"_blank">more informat=
|
||||
ion</a> about the credit card payments process.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;"><tab=
|
||||
le width=3D"100%" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table width=3D"100%" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" =
|
||||
border=3D"0" class=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"padding:0px; =
|
||||
vertical-align:top; padding: 0px 0px 30px 30px;" class=3D"moPad"><table ali=
|
||||
gn=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"verti=
|
||||
cal-align:top;">
|
||||
<tr>
|
||||
<td role=3D"button" align=3D"center=
|
||||
" style=3D"background-color:#0060f0; color: #fffffe; font-size: 16px; font-=
|
||||
family: Arial, Helvetica, sans-serif; padding: 10px 0px; border: 1px solid =
|
||||
#0060f0; vertical-align:top; border-radius:4px; -moz-border-radius: 4px; -w=
|
||||
ebkit-border-radius:4px;width: 200px;"><a href=3D"https://www.chase.com/per=
|
||||
sonal/mobile-online-banking/payment-activity" target=3D"_blank" style=3D"co=
|
||||
lor: #fffffe; text-decoration:none;">See payment activity</a></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:0px 30px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12px;=
|
||||
color:#717171;" class=3D"moPad font14">Securely access your accounts with =
|
||||
the <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https:/=
|
||||
/www.chase.com/digital/mobile-banking" rel=3D"noopener noreferrer" target=
|
||||
=3D"_blank">Chase Mobile<span style=3D"font-size:70%; line-height:0; v=
|
||||
ertical-align:3px; text-decoration: none;">®</span> app</a> or <a style=
|
||||
=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.chas=
|
||||
e.com/web/auth/nav?navKey=3DrequestDashboard" rel=3D"noopener noreferrer" =
|
||||
target=3D"_blank">chase.com</a>. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #F6F6F6;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding:20px 30px 60px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:12px; color:#717171;" class=3D"moPad font14"><span role=3D"heading" style=
|
||||
=3D"text-transform: uppercase; font-weight: bold;">About this message</span=
|
||||
><br />
|
||||
<br />
|
||||
Chase Mobile<span style=3D"font-size:70%=
|
||||
; line-height:0; vertical-align:3px;">®</span> app is available for se=
|
||||
lect mobile devices. Message and data rates may apply.<br />
|
||||
<br />
|
||||
This service email was sent based on your ale=
|
||||
rt settings. Use the Chase Mobile app or visit <a href=3D"https://www.=
|
||||
chase.com/personal/mobile-online-banking/login-alerts" target=3D"_blank" st=
|
||||
yle=3D"text-decoration: underline; color:#0060F0;" rel=3D"noopener noreferr=
|
||||
er">chase.com/alerts</a> to view or manage your settings.<br />
|
||||
<br />
|
||||
Chase cannot guarantee the delivery of alerts=
|
||||
and notifications. Wireless or internet service provider outages or other =
|
||||
circumstances could delay them. You can always check <span class=3D"appleli=
|
||||
nksgray"><a style=3D"color:#717171;text-decoration: none;">chase.com</a></s=
|
||||
pan> or the Chase Mobile app for the status of your accounts including=
|
||||
your latest account balances and transaction details.<br />
|
||||
<br />
|
||||
To protect your personal information, please =
|
||||
don't reply to this message. Chase won't ask for confidential information i=
|
||||
n an email. <br />
|
||||
<br />
|
||||
If you have concerns about the authenticity o=
|
||||
f this message or have questions about your account visit <a style=3D"text-=
|
||||
decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/digita=
|
||||
l/customer-service" target=3D"_blank" rel=3D"noopener noreferrer">chase.com=
|
||||
/CustomerService</a> for ways to contact us.<br />
|
||||
<br />
|
||||
Your privacy is important to us. See our onli=
|
||||
ne <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https://=
|
||||
www.chase.com/digital/resources/privacy-security" target=3D"_blank" rel=3D"=
|
||||
noopener noreferrer">Security Center</a> to learn how to protect your infor=
|
||||
mation.<br />
|
||||
<br />
|
||||
© 2021 JPMorgan Chase & Co. </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:top; padding:0px=
|
||||
0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/imag=
|
||||
es/white-right.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!--End of Content -->
|
||||
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -8,107 +8,6 @@ w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1.=
|
||||
0"/>
|
||||
<title>This payment has been applied to your account.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass =
|
||||
td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table align=3D"center" width=3D"100%" border=3D"0" cellspacing=3D"0" cellp=
|
||||
|
|
|
|||
|
|
@ -0,0 +1,450 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6022:841f:b0:65:30d1:7dd8 with SMTP id cd31csp2448994lab;
|
||||
Tue, 14 Jan 2025 06:30:20 -0800 (PST)
|
||||
X-Google-Smtp-Source: AGHT+IHYZt9A+xv7R+D4Y7HTjuMOF9AEKaiIlF4EdjFtsSfmydmud4yvbL76Eu3hDdG3gPzkKq0q
|
||||
X-Received: by 2002:a05:6102:26c8:b0:4b2:ad82:133a with SMTP id ada2fe7eead31-4b3d0eb943emr21123581137.25.1736865019937;
|
||||
Tue, 14 Jan 2025 06:30:19 -0800 (PST)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1736865019; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=Rc1IYtgLaCuSXjmliSBjzCic5e4nKmKGznZ2oE2tH/uDoOMup1O1tttRQlC9cOctpQ
|
||||
bnab4p6dFpkgMbRJQ5bkUq8hZBufvpTISsrBVrl1QeHuX+IpOCAJSVWAhq/4DlFZYsOg
|
||||
DJz4bmNsRXBI3/sY5s6F6lBovD5TyJhrxrIOR9BucgdcF1MpggUIa7BUDFjUHMmnRJbl
|
||||
w9aFWQUzts6j/EbqCrzfcG8VwSqNI+92NacyHUZBQW3FkGFOL6awi+mFWB54aE2pbMfd
|
||||
gs70fluhGntfisIoN+FLhbSh3tDYJx+s2jradTChgYHSDzbS+d6OLLtlmbQLw8XDwMZU
|
||||
PzOg==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=retry-count:notification-id:content-transfer-encoding:mime-version
|
||||
:subject:message-id:to:from:date:dkim-signature;
|
||||
bh=3jCY5JM6cbpoPMj0taKBjFy0yqql6DMNeO04KlgY7p8=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=eKMw8xKjUKtT6k6DyEh0UDuPooWFu1Si3rlu8EVh+kAGTUorD+6X8psBD/n15j+msg
|
||||
+07h4M8xk0FSAMUcRsVENUp9ptnGW6Mt7gBO0CrxdspczNz1ZcKvC61YVevslrqN535F
|
||||
ndp54648k1fLGbFVQwsRViJkHGne9v8nHw6jYyVC8aU2dwKxTNJBznzgnkyppF6Se1ti
|
||||
htPjPmc+wVUL0uoz+OhVDCoKhDn+PfyjS5dDdb1kk9EM1WgxW66CrGxGC78pJstZJv9i
|
||||
tH7ImIDKoyPCRrr57faT+tN5JoA9uR+ANX9jXeFspgyfwuPIXvXzZmfRlwRch4IYp/Vj
|
||||
Cdlw==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=Sn1+UmH9;
|
||||
spf=pass (google.com: domain of no.reply.alerts.14@chase.com designates 146.143.72.23 as permitted sender) smtp.mailfrom=no.reply.alerts.14@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Return-Path: <no.reply.alerts.14@chase.com>
|
||||
Received: from vsin80p3166.jpmchase.com (vsin80p3166.jpmchase.com. [146.143.72.23])
|
||||
by mx.google.com with ESMTPS id ada2fe7eead31-4b60929a598si3998057137.312.2025.01.14.06.30.19
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Tue, 14 Jan 2025 06:30:19 -0800 (PST)
|
||||
Received-SPF: pass (google.com: domain of no.reply.alerts.14@chase.com designates 146.143.72.23 as permitted sender) client-ip=146.143.72.23;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=Sn1+UmH9;
|
||||
spf=pass (google.com: domain of no.reply.alerts.14@chase.com designates 146.143.72.23 as permitted sender) smtp.mailfrom=no.reply.alerts.14@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Received: from pps.filterd (vsin80p3166.dmz.us.jpmchase.net [127.0.0.1]) by vsin80p3166.jpmchase.com (8.18.1.2/8.18.1.2) with ESMTP id 50EDZ96f024767 for <breellocaldev@gmail.com>; Tue, 14 Jan 2025 14:30:18 GMT
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chase.com; h=content-transfer-encoding : content-type : date : from : message-id : mime-version : subject : to; s=d4815; bh=3jCY5JM6cbpoPMj0taKBjFy0yqql6DMNeO04KlgY7p8=; b=Sn1+UmH9sAIKrcSjgZt+WYnhb6bWokFKDnKcueoi51YEx1PhxifjbnkH5vC7IxwUTzGA isW1vjStyAi0mF64goItdf4GQBbD2hajG8GhPsDDlssHM5mwLi8Yz07B/p1mrHp8wCqf PRn278RbCw/hP7x2enyrd4WKASn3b/TLQId35h+j8OJk8cDOS/zw2iF/SA7C51hSTcEj Pnm84TIJXer81VZzGC4ReReIpWQbN5Is/A/25h1vLu21Ahb8aIIQ3QHI1D2B2jshpO17 6CzXpxUsBWscUXJWNvrjgqeSlLJW3MPD9bb//uKb+qLr3oGQQ7uD+KOnSG8iqmQPpXHZ lg==
|
||||
Received: from vsin68p8372.nane.jpmchase.net ([169.103.129.216]) by vsin80p3166.dmz.us.jpmchase.net (PPS) with ESMTPS id 4443sjtnqe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <breellocaldev@gmail.com>; Tue, 14 Jan 2025 14:30:18 +0000
|
||||
Received: from iaasn00692074.nane.jpmchase.net (iaasn00692074.nane.jpmchase.net [169.103.127.222])
|
||||
by vsin68p8372.nane.jpmchase.net
|
||||
with ESMTP id 50EEUHGS011857
|
||||
for <breellocaldev@gmail.com>; Tue, 14 Jan 2025 14:30:17 GMT
|
||||
Date: Tue, 14 Jan 2025 14:30:17 +0000 (UTC)
|
||||
From: Chase <no.reply.alerts@chase.com>
|
||||
To: breellocaldev@gmail.com
|
||||
Message-ID: <128726875.10629657.1736865017764.JavaMail.webuser@iaasn00692074>
|
||||
Subject: Your Chase Freedom Unlimited balance is $1,029.08
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
NOTIFICATION-ID: CREDIT_BATCH_BALANCE-28a12d61790b7acb6dc0d2075b17f7c0380224e9a180581da96fa1a87b454084-ver4-31-941c9e20-41c8-3b3c-aefd-f27755b09008
|
||||
RETRY-COUNT: 0
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww=
|
||||
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" =
|
||||
/>
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D=
|
||||
1.0"/>
|
||||
<title>See more details about your card balance.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClas=
|
||||
s td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table align=3D"center" width=3D"100%" border=3D"0" cellspacing=3D"0" cel=
|
||||
lpadding=3D"0" style=3D"min-width:800px; background-color:#d7dbe0;" class=
|
||||
=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding:0px 0px 20p=
|
||||
x 0px; min-width:800px; background-color:#d7dbe0;" class=3D"fullWidth"><tab=
|
||||
le align=3D"center" width=3D"800" cellpadding=3D"0" cellspacing=3D"0" borde=
|
||||
r=3D"0" class=3D"fullWidth" style=3D"background-color:#FFFFFF;">
|
||||
<!-- Start of Content -->
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 23px=
|
||||
0px 0px;background-color: #005EB8;"><table cellpadding=3D"0" cellspacing=
|
||||
=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:bottom; paddi=
|
||||
ng:0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/emai=
|
||||
l/images/blue-left.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"d=
|
||||
isplay:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:bottom; padd=
|
||||
ing: 0px 0px 0px;width:616px; background-color: #FFFFFF;"><table width=3D"1=
|
||||
00%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding: 0px 0px; background-color: #ffffff;"><table width=3D"100%" cellpaddin=
|
||||
g=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<!-- Start hidden preview text -->
|
||||
<div style=3D"display: none; max-height: 0px; o=
|
||||
verflow: hidden;">See more details about your card balance.</div>
|
||||
|
||||
<!-- Insert ‌ after hidden preview t=
|
||||
ext -->
|
||||
|
||||
<div style=3D"display: none; max-height: 0px; o=
|
||||
verflow: hidden;"> ‌ ‌ ‌ ‌ &z=
|
||||
wnj; ‌ ‌ ‌ ‌ ‌ &zwnj=
|
||||
; ‌ ‌ ‌ ‌ ‌ &z=
|
||||
wnj; ‌ ‌ ‌ ‌ ‌ &zwnj=
|
||||
; ‌ ‌ ‌ ‌ ‌ ‌&n=
|
||||
bsp;‌ ‌ ‌ ‌ ‌ ‌ =
|
||||
;‌ ‌ ‌ ‌ ‌ ‌ &z=
|
||||
wnj; ‌ ‌ ‌ ‌ ‌ &zwnj=
|
||||
; ‌ ‌ ‌ ‌ ‌ ‌&n=
|
||||
bsp;‌ ‌ ‌ ‌ ‌ ‌ =
|
||||
;‌ ‌ ‌ ‌ ‌ ‌&n=
|
||||
bsp;‌ ‌ ‌ ‌ ‌ ‌ =
|
||||
;‌ ‌ ‌ ‌ ‌ ‌ &z=
|
||||
wnj; ‌ ‌ ‌ ‌ ‌ &zwnj=
|
||||
; ‌ ‌ ‌ ‌ ‌ ‌&n=
|
||||
bsp;‌ ‌ ‌ ‌ ‌ ‌ =
|
||||
;‌ ‌ ‌ ‌ ‌ ‌ &z=
|
||||
wnj; </div>
|
||||
<!-- End hidden preview text -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p;padding-left: 30px; background-color: #ffffff;" class=3D"moPad"><table wi=
|
||||
dth=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-al=
|
||||
ign:bottom; padding:36px 0px 20px;"><img src=3D"https://www.chase.com/conte=
|
||||
nt/dam/email/images/chase-logo-h-rgb.png" width=3D"104" height=3D"20" borde=
|
||||
r=3D"0" style=3D"display:block;" alt=3D"Chase Logo"/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p; padding: 20px 28px 0px; background-color: #ffffff;" class=3D"moPad"><tab=
|
||||
le align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-al=
|
||||
ign:top;"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"verti=
|
||||
cal-align:top; padding:5px 10px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:12px; font-weight:bold; color:#414042; background-color:#D7DBE0; =
|
||||
border-radius:20px; -moz-border-radius: 20px; -webkit-border-radius:20px; w=
|
||||
hite-space: nowrap;" class=3D"font14">Account Alert</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p; background-color: #ffffff;"><table width=3D"100%" cellpadding=3D"0" cell=
|
||||
spacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-al=
|
||||
ign:top; padding: 20px 30px 28px;" class=3D"moPad"><table width=3D"100%" ce=
|
||||
llpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"verti=
|
||||
cal-align:top; padding: 0px 20px 0px 0px;"><img src=3D"https://static.chase=
|
||||
cdn.com/content/services/rendition/image.small.png/unified-assets/digital-c=
|
||||
ards/chase-freedom/freedom-unlimited/41473417013.png" width=3D"57" height=
|
||||
=3D"auto" alt=3D"" border=3D"0" style=3D"display:block;"/></td>
|
||||
<td align=3D"left" style=3D"verti=
|
||||
cal-align:top; padding:0px 50px 0px 0px; font-family:Arial, Helvetica, sans=
|
||||
-serif; font-size:30px; font-weight: bold; color:#414042;" class=3D"zeroPad=
|
||||
">Your balance of $1,029.08 is over the level you set</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:bottom; paddin=
|
||||
g:0px 0px;width:12px; "><img src=3D"https://www.chase.com/content/dam/email=
|
||||
/images/blue-right.jpg " width=3D"12" height=3D"226" border=3D"0" style=3D"=
|
||||
display:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 0px =
|
||||
0px 0px; background-color: #FFFFFF;"><table cellpadding=3D"0" cellspacing=
|
||||
=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:top; padding:=
|
||||
0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/i=
|
||||
mages/white-left.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"disp=
|
||||
lay:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding=
|
||||
: 0px 0px 0px;width:616px;"><table width=3D"100%" cellpadding=3D"0" cellspa=
|
||||
cing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding: 0px 150px 0px 30px;" class=3D"moPad"><table width=3D"100%" cellpaddin=
|
||||
g=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p; padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100=
|
||||
%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-al=
|
||||
ign:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;=
|
||||
font-size:16px; color:#414042;" class=3D"font14">Account</td>
|
||||
<td align=3D"right" style=3D"vertical-a=
|
||||
lign:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif=
|
||||
; font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Chase =
|
||||
Freedom Unlimited (...5876)</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p; padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100=
|
||||
%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-al=
|
||||
ign:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif;=
|
||||
font-size:16px; color:#414042;" class=3D"font14">Balance</td>
|
||||
<td align=3D"right" style=3D"vertical-a=
|
||||
lign:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif=
|
||||
; font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">$1,029=
|
||||
.08</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding:40px 180px 40px 30px; font-family:Arial, Helvetica, sans-serif; font-s=
|
||||
ize:16px; color:#414042;" class=3D"moPad">You are receiving this alert beca=
|
||||
use your balance has reached the $0.00 level you set.<br /> <br /> You can =
|
||||
visit our <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"h=
|
||||
ttps://www.chase.com/personal/credit-cards/card-resource-center" rel=3D"noo=
|
||||
pener noreferrer" target=3D"_blank">Resource Center</a> anytime to help an=
|
||||
swer your questions or manage your account.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;"><t=
|
||||
able width=3D"100%" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" bord=
|
||||
er=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p;"><table width=3D"200" align=3D"left" cellpadding=3D"0" cellspacing=3D"0"=
|
||||
border=3D"0" class=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"padding:0px=
|
||||
; vertical-align:top; padding: 0px 0px 30px 30px;" class=3D"moPad"><table a=
|
||||
lign=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"ver=
|
||||
tical-align:top;">
|
||||
<tr>
|
||||
<td role=3D"button" align=3D"cent=
|
||||
er" style=3D"background-color:#0060f0; color: #fffffe; font-size: 16px; fon=
|
||||
t-family: Arial, Helvetica, sans-serif; padding: 10px 0px; border: 1px soli=
|
||||
d #0060f0; vertical-align:top; border-radius:4px; -moz-border-radius: 4px; =
|
||||
-webkit-border-radius:4px;width: 168px;"><a href=3D"https://secure.chase.co=
|
||||
m/web/auth/nav?navKey=3DrequestDashboard" target=3D"_blank" style=3D"color:=
|
||||
#fffffe; text-decoration:none;">Review account</a></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding:0px 30px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12p=
|
||||
x; color:#717171;" class=3D"moPad font14">Securely access your accounts wit=
|
||||
h the <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https=
|
||||
://www.chase.com/digital/mobile-banking" rel=3D"noopener noreferrer" targe=
|
||||
t=3D"_blank">Chase Mobile<span style=3D"font-size:70%; line-height:0; =
|
||||
vertical-align:3px; text-decoration: none;">®</span> app</a> or <a styl=
|
||||
e=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.cha=
|
||||
se.com/web/auth/nav?navKey=3DrequestDashboard" rel=3D"noopener noreferrer" =
|
||||
target=3D"_blank">chase.com</a>. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding: 0px 0px; background-color: #F6F6F6;"><table width=3D"100%" cellpaddin=
|
||||
g=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:to=
|
||||
p; padding:20px 30px 60px; font-family:Arial, Helvetica, sans-serif; font-s=
|
||||
ize:12px; color:#717171;" class=3D"moPad font14"><span role=3D"heading" sty=
|
||||
le=3D"text-transform: uppercase; font-weight: bold;">About this message</sp=
|
||||
an><br />
|
||||
<br />
|
||||
Chase Mobile<span style=3D"font-size:7=
|
||||
0%; line-height:0; vertical-align:3px;">®</span> app is available for s=
|
||||
elect mobile devices. Message and data rates may apply.<br />
|
||||
<br />
|
||||
This service email was sent based on your a=
|
||||
lert settings. Use the Chase Mobile app or visit <a href=3D"https://ww=
|
||||
w.chase.com/personal/mobile-online-banking/login-alerts" target=3D"_blank" =
|
||||
style=3D"text-decoration: underline; color:#0060F0;" rel=3D"noopener norefe=
|
||||
rrer">chase.com/alerts</a> to view or manage your settings.<br />
|
||||
<br />
|
||||
Chase cannot guarantee the delivery of aler=
|
||||
ts and notifications. Wireless or internet service provider outages or othe=
|
||||
r circumstances could delay them. You can always check <span class=3D"apple=
|
||||
linksgray"><a style=3D"color:#717171;text-decoration: none;">chase.com</a><=
|
||||
/span> or the Chase Mobile app for the status of your accounts includi=
|
||||
ng your latest account balances and transaction details.<br />
|
||||
<br />
|
||||
To protect your personal information, pleas=
|
||||
e don't reply to this message. Chase won't ask for confidential information=
|
||||
in an email. <br />
|
||||
<br />
|
||||
If you have concerns about the authenticity=
|
||||
of this message or have questions about your account visit <a style=3D"tex=
|
||||
t-decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/digi=
|
||||
tal/customer-service" target=3D"_blank" rel=3D"noopener noreferrer">chase.c=
|
||||
om/CustomerService</a> for ways to contact us.<br />
|
||||
<br />
|
||||
Your privacy is important to us. See our on=
|
||||
line <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https:=
|
||||
//www.chase.com/digital/resources/privacy-security" target=3D"_blank" rel=
|
||||
=3D"noopener noreferrer">Security Center</a> to learn how to protect your i=
|
||||
nformation.<br />
|
||||
<br />
|
||||
© 2025 JPMorgan Chase & Co. </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:top; padding:0=
|
||||
px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/im=
|
||||
ages/white-right.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"disp=
|
||||
lay:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!--End of Content -->
|
||||
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,477 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6022:5675:b0:72:1e7d:3888 with SMTP id er21csp4584200lab;
|
||||
Wed, 4 Jun 2025 14:21:55 -0700 (PDT)
|
||||
X-Google-Smtp-Source: AGHT+IEHEZFpfFptRb8iKNwmfilCWAGJ701ZkjFidhuUYVUH39CGReGxuKMxY2anJJipep1sauOZ
|
||||
X-Received: by 2002:a05:6602:b89:b0:86c:f30b:1f53 with SMTP id ca18e2360f4ac-8731c618143mr564722439f.13.1749072114993;
|
||||
Wed, 04 Jun 2025 14:21:54 -0700 (PDT)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1749072114; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=WL5tcjRmDMa4djUmb4JWFIrG+HkINxUSguY0lXuzX4mUn1Ign88n5KZhXa9DLgKVjn
|
||||
OOD0pxiJwikBLWeF0BAIH9ZLE7oUj0WVerOqw2TMRPUxGhJlPLs3bZvVukZnCUpGY88v
|
||||
Igw8fo4r7ulJtxbi4rZ9zA0SJJ19hLJL5M1yLq5d9S2J4t+ZNlDro5VUkaxofJKvirRS
|
||||
oue1WDn4sORjY2foIwI262UaD7Jbb1xCt806w22Ce5IAy+hH+Oy2woByR34cnFHtY8N5
|
||||
Wy4XSpuvIxwS5yCNIs+NZnQ+3h7st03BOloIpNjG97nIwu4nIHuLc0XGvpxPkshBlkzT
|
||||
XAyg==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=retry-count:notification-id:content-transfer-encoding:mime-version
|
||||
:subject:message-id:to:from:date:dkim-signature;
|
||||
bh=s8C47OdoV1gXfqN9qIkir+Y8P9kkuDnmIZQEA9WBZbw=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=kqPsUii3FbWObwAWdD8O1DA0jpayOshHNJbSBHS6aNDpkwgXmB6GqaA0W+99hSLdhD
|
||||
xWVDHHkbyfpAWTh5s7jKs97jT56IZwl4TTL2HGimXqpwKvNf4yLy+nPthZ6R8Yi+ufn6
|
||||
XjA2dCSn+87/RNfHE82sE7RFLuGD3LzXKyArQ7EDSo/8cV4bqq0zl1rot3vmm1rEs5P5
|
||||
A4P1QJUVXxfGsJ1oXXOfW7L3MOk6Uzb0YwirfnxIb2oDQai+RvYMgCQ/avrYQpIm09BM
|
||||
vgNZqVMtD3Vcig9bxuhmbQ++gdqk55MVyTRXlVLr3CWPOWfRehdtagiZ9cRQD/yjEVkq
|
||||
NRXQ==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=iVm+FQf7;
|
||||
spf=pass (google.com: domain of no.reply.alerts.08@chase.com designates 146.143.72.27 as permitted sender) smtp.mailfrom=no.reply.alerts.08@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Return-Path: <no.reply.alerts.08@chase.com>
|
||||
Received: from vsin80p3239.jpmchase.com (vsin80p3239.jpmchase.com. [146.143.72.27])
|
||||
by mx.google.com with ESMTPS id ca18e2360f4ac-86cf5e5248esi1579461739f.41.2025.06.04.14.21.54
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Wed, 04 Jun 2025 14:21:54 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: domain of no.reply.alerts.08@chase.com designates 146.143.72.27 as permitted sender) client-ip=146.143.72.27;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=iVm+FQf7;
|
||||
spf=pass (google.com: domain of no.reply.alerts.08@chase.com designates 146.143.72.27 as permitted sender) smtp.mailfrom=no.reply.alerts.08@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Received: from pps.filterd (vsin80p3239.dmz.us.jpmchase.net [127.0.0.1]) by vsin80p3239.jpmchase.com (8.18.1.2/8.18.1.2) with ESMTP id 554Kr2up017789 for <breellocaldev@gmail.com>; Wed, 4 Jun 2025 21:21:54 GMT
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chase.com; h=content-transfer-encoding : content-type : date : from : message-id : mime-version : subject : to; s=d4815; bh=s8C47OdoV1gXfqN9qIkir+Y8P9kkuDnmIZQEA9WBZbw=; b=iVm+FQf7A/D88nX3I1dK8HOPR4FMeFF5OqHUJRKLUlqxP6Hj9/yrDf+dwrjS+lcHkS1Y nNGNhMyBy1jQMwfw5B6Wa49VrcD637A0zu9iHwVVW5dvIwbrkl0zC18PQDo85UdyunpY qIwrNapM9aX0cYqJZ/E12S0YaTt/3xyGdQe8eBb1iB7xDzNZTAakHiYV1JsmzL+phQfi C8r1OkSJEAY0lxMY2ksxgvW5gKx0ltYX4PKi6wV6g5vV4lc1IBhZz/4VpjWNba77SeH4 DByZmhDWFkL9qRSy5OPigrow5eJ6Xj/1bFO1P+OiPZ6Mz2dvByQ5K2Qv7G5xOz4A8LRE mQ==
|
||||
Received: from vsin53p7503.nanw.jpmchase.net ([169.72.103.155]) by vsin80p3239.dmz.us.jpmchase.net (PPS) with ESMTPS id 470djp00eg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <breellocaldev@gmail.com>; Wed, 04 Jun 2025 21:21:54 +0000
|
||||
Received: from iaasn00692069.nane.jpmchase.net (iaasn00692069.nane.jpmchase.net [169.101.108.220])
|
||||
by vsin53p7503.nanw.jpmchase.net
|
||||
with ESMTP id 554LLrV6018616
|
||||
for <breellocaldev@gmail.com>; Wed, 4 Jun 2025 21:21:54 GMT
|
||||
Date: Wed, 4 Jun 2025 21:21:53 +0000 (UTC)
|
||||
From: Chase <no.reply.alerts@chase.com>
|
||||
To: breellocaldev@gmail.com
|
||||
Message-ID: <1514303812.1327452.1749072113609.JavaMail.webuser@iaasn00692069>
|
||||
Subject: You have a $394.96 credit pending on your credit card
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
NOTIFICATION-ID: CREDIT_REALTIME_AUTH-f49cf41b1787628a22bb0429e97ec4a845fde585fdfb593548c46498773b47a2-ver3-3187-941c9e20-41c8-3b3c-aefd-f27755b09008
|
||||
RETRY-COUNT: 0
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" />
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1.=
|
||||
0"/>
|
||||
<title>See more details here.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass =
|
||||
td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table align=3D"center" width=3D"100%" border=3D"0" cellspacing=3D"0" cellp=
|
||||
adding=3D"0" style=3D"min-width:800px; background-color:#d7dbe0;" class=3D"=
|
||||
fullWidth">
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding:0px 0px 20px =
|
||||
0px; min-width:800px; background-color:#d7dbe0;" class=3D"fullWidth"><table=
|
||||
align=3D"center" width=3D"800" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0" class=3D"fullWidth" style=3D"background-color:#FFFFFF;">
|
||||
<!-- Start of Content -->
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 23px 0=
|
||||
px 0px;background-color: #005EB8;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:bottom; padding=
|
||||
:0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/=
|
||||
images/blue-left.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:bottom; paddin=
|
||||
g: 0px 0px 0px;width:616px; background-color: #FFFFFF;"><table width=3D"100=
|
||||
%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #ffffff;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<!-- Start hidden preview text -->
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;">See more details here.</div>
|
||||
|
||||
<!-- Insert ‌ after hidden preview tex=
|
||||
t -->
|
||||
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;"> ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; </div>
|
||||
<!-- End hidden preview text -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding-left: 30px;" class=3D"moPad"><table width=3D"100%" cellpadding=3D"0=
|
||||
" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:bottom; padding:36px 0px 20px;"><img src=3D"https://www.chase.com/content=
|
||||
/dam/email/images/chase-logo-h-rgb.png" width=3D"104" height=3D"20" border=
|
||||
=3D"0" style=3D"display:block;" alt=3D"Chase Logo"/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 20px 28px 0px; background-color: #ffffff;" class=3D"moPad"><table=
|
||||
align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top;"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D=
|
||||
"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:5px 10px; font-family:Arial, Helvetica, sans-serif; fo=
|
||||
nt-size:12px; font-weight:bold; color:#414042; background-color:#D7DBE0; bo=
|
||||
rder-radius:20px; -moz-border-radius: 20px; -webkit-border-radius:20px; whi=
|
||||
te-space: nowrap;" class=3D"font14">Transaction alert</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding: 20px 30px 28px;" class=3D"moPad"><table width=3D"100%" cell=
|
||||
padding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding: 0px 20px 0px 0px;"><img src=3D"https://static.chasecd=
|
||||
n.com/content/services/rendition/image.small.png/unified-assets/digital-car=
|
||||
ds/chase-freedom/freedom-unlimited/41473417013.png" width=3D"57" height=3D=
|
||||
"auto" alt=3D"" border=3D"0" style=3D"display:block;"/></td>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:0px 50px 0px 0px; font-family:Arial, Helvetica, sans-s=
|
||||
erif; font-size:30px; font-weight: bold; color:#414042;" class=3D"zeroPad">=
|
||||
You have a $394.96 credit pending on your credit card</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:bottom; padding:=
|
||||
0px 0px;width:12px; "><img src=3D"https://www.chase.com/content/dam/email/i=
|
||||
mages/blue-right.jpg " width=3D"12" height=3D"226" border=3D"0" style=3D"di=
|
||||
splay:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 0px 0p=
|
||||
x 0px; background-color: #FFFFFF;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:top; padding:0p=
|
||||
x 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/ima=
|
||||
ges/white-left.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: =
|
||||
0px 0px 0px;width:616px;"><table width=3D"100%" cellpadding=3D"0" cellspaci=
|
||||
ng=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 150px 0px 30px;" class=3D"moPad"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Account</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Chase Fr=
|
||||
eedom Unlimited Visa (...5876)</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
=09=09=09=09=09=09 <tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Date</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14"><span cl=
|
||||
ass=3D"applelinksgray41"><a style=3D"color:#414042;text-decoration: none;">=
|
||||
Jun 4, 2025 at 5:21 PM ET</a></span></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Merchant</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">AMAZON M=
|
||||
KTPLACE PMTS</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Credit Amount</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">$394.96<=
|
||||
/td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:40px 180px 40px 30px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:16px; color:#414042;" class=3D"moPad">You can visit our <a style=3D"text-=
|
||||
decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/person=
|
||||
al/credit-cards/card-resource-center" rel=3D"noopener noreferrer" target=
|
||||
=3D"_blank">Resource Center</a> anytime to help answer your questions or ma=
|
||||
nage your account.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;"><tab=
|
||||
le width=3D"100%" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table width=3D"200" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" b=
|
||||
order=3D"0" class=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"padding:0px; =
|
||||
vertical-align:top; padding: 0px 0px 30px 30px;" class=3D"moPad"><table ali=
|
||||
gn=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"verti=
|
||||
cal-align:top;">
|
||||
<tr>
|
||||
<td role=3D"button" align=3D"center=
|
||||
" style=3D"background-color:#0060f0; color: #fffffe; font-size: 16px; font-=
|
||||
family: Arial, Helvetica, sans-serif; padding: 10px 0px; border: 1px solid =
|
||||
#0060f0; vertical-align:top; border-radius:4px; -moz-border-radius: 4px; -w=
|
||||
ebkit-border-radius:4px;width: 168px;"><a href=3D"https://secure.chase.com/=
|
||||
web/auth/nav?navKey=3DrequestDashboard" target=3D"_blank" style=3D"color: #=
|
||||
fffffe; text-decoration:none;">Review account</a></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:0px 30px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12px;=
|
||||
color:#717171;" class=3D"moPad font14">Securely access your accounts with =
|
||||
the <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https:/=
|
||||
/www.chase.com/digital/mobile-banking" rel=3D"noopener noreferrer" target=
|
||||
=3D"_blank">Chase Mobile<span style=3D"font-size:70%; line-height:0; v=
|
||||
ertical-align:3px; text-decoration: none;">®</span> app</a> or <a style=
|
||||
=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.chas=
|
||||
e.com/web/auth/nav?navKey=3DrequestDashboard" rel=3D"noopener noreferrer" =
|
||||
target=3D"_blank">chase.com</a>. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #F6F6F6;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding:20px 30px 60px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:12px; color:#717171;" class=3D"moPad font14"><span role=3D"heading" style=
|
||||
=3D"text-transform: uppercase; font-weight: bold;">About this message</span=
|
||||
><br />
|
||||
<br />
|
||||
Chase Mobile<span style=3D"font-size:70%=
|
||||
; line-height:0; vertical-align:3px;">®</span> app is available for se=
|
||||
lect mobile devices. Message and data rates may apply.<br />
|
||||
<br />
|
||||
This service email was sent based on your ale=
|
||||
rt settings. Use the Chase Mobile app or visit <a href=3D"https://www.=
|
||||
chase.com/personal/mobile-online-banking/login-alerts" target=3D"_blank" st=
|
||||
yle=3D"text-decoration: underline; color:#0060F0;" rel=3D"noopener noreferr=
|
||||
er">chase.com/alerts</a> to view or manage your settings.<br />
|
||||
<br />
|
||||
Chase cannot guarantee the delivery of alerts=
|
||||
and notifications. Wireless or internet service provider outages or other =
|
||||
circumstances could delay them. You can always check <span class=3D"appleli=
|
||||
nksgray"><a style=3D"color:#717171;text-decoration: none;">chase.com</a></s=
|
||||
pan> or the Chase Mobile app for the status of your accounts including=
|
||||
your latest account balances and transaction details.<br />
|
||||
<br />
|
||||
To protect your personal information, please =
|
||||
don't reply to this message. Chase won't ask for confidential information i=
|
||||
n an email. <br />
|
||||
<br />
|
||||
If you have concerns about the authenticity o=
|
||||
f this message or have questions about your account visit <a style=3D"text-=
|
||||
decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/digita=
|
||||
l/customer-service" target=3D"_blank" rel=3D"noopener noreferrer">chase.com=
|
||||
/CustomerService</a> for ways to contact us.<br />
|
||||
<br />
|
||||
Your privacy is important to us. See our onli=
|
||||
ne <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https://=
|
||||
www.chase.com/digital/resources/privacy-security" target=3D"_blank" rel=3D"=
|
||||
noopener noreferrer">Security Center</a> to learn how to protect your infor=
|
||||
mation.<br />
|
||||
<br />
|
||||
© 2025 JPMorgan Chase & Co. </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:top; padding:0px=
|
||||
0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/imag=
|
||||
es/white-right.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!--End of Content -->
|
||||
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,480 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6022:5675:b0:72:1e7d:3888 with SMTP id er21csp4539254lab;
|
||||
Wed, 4 Jun 2025 12:43:12 -0700 (PDT)
|
||||
X-Google-Smtp-Source: AGHT+IHLeG/uqg3e2qFuWubH6OD72TD4QmoFcQ31qKCueuVIZoGu49++XdkNYyPDDDjXxgHpTYGz
|
||||
X-Received: by 2002:a05:622a:17c9:b0:494:adc6:239f with SMTP id d75a77b69052e-4a5a573b3ffmr56590531cf.10.1749066192430;
|
||||
Wed, 04 Jun 2025 12:43:12 -0700 (PDT)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1749066192; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=UW84WKYFh9Li7n5AqU3nJhcA0/kJkrmUDuwjsdJ+F/1rCW6wyGavwX03AaHscl8Pob
|
||||
mSnqS5M/E4dn6KxlA7F/qEfBwKLUiY+2F3IDZE+/2a0JB10vXf/zlibv0YW9+wGZ/IGo
|
||||
I5CASyfhZE4v46TPcmEf0oFPynqdmLbXCaTe4C6B8cpeQoIxIIBAQSKUlqezPc0QTFfg
|
||||
cI9DXK2MlS4LVV96avu/riqyjlF2C2DmrJCYVoAo3f+ZX3ZZdpbjdeFPQamu/lwVq21y
|
||||
yM2IXu9AGzLATGwZSXne9eCpA9mq/77o2jBpZq4mpcmIPGwKd/Eh8+pV1pVJ5y8ADX5L
|
||||
+ptw==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=retry-count:notification-id:content-transfer-encoding:mime-version
|
||||
:subject:message-id:to:from:date:dkim-signature;
|
||||
bh=rF8v8eIeIYAhxeF3fale6PXDnNUzP2v6MrVz5J+kDO4=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=EVrCwozzyia+LzWOT/2KZDSib6ZYshhBgwQLH/OtCZj802Mwz+AaV+RISBdrvrHAWK
|
||||
FvVe7oFJTQ6yjpQgQtCwlwyFleGPugdlZXQyuDu7kvNM55t4RBFf3MvJxgHzrTQpjqj+
|
||||
7pQIav6n/wq4lY30mIbYWxrki/c+oBMvqRLhXw921d30l6FVAW3xxAdHD4ivLGWahAej
|
||||
BKFvzyGSeNq+z7BnlLXInNoPj7Il2PBtEz6w0dgQV++3DMmvbaprCnCQUaSyDeOAwLwR
|
||||
l+dzEhXz9Oc65b58D9+IQvRk1QQTMMPA6QEQYYS8zqPzMJr2u9LaOO9Z/cSw0DdKDxKp
|
||||
tA4g==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=gHcZ2j7g;
|
||||
spf=pass (google.com: domain of no.reply.alerts.09@chase.com designates 146.143.72.25 as permitted sender) smtp.mailfrom=no.reply.alerts.09@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Return-Path: <no.reply.alerts.09@chase.com>
|
||||
Received: from vsin80p3234.jpmchase.com (vsin80p3234.jpmchase.com. [146.143.72.25])
|
||||
by mx.google.com with ESMTPS id d75a77b69052e-4a435886637si159823641cf.98.2025.06.04.12.43.12
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Wed, 04 Jun 2025 12:43:12 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: domain of no.reply.alerts.09@chase.com designates 146.143.72.25 as permitted sender) client-ip=146.143.72.25;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=gHcZ2j7g;
|
||||
spf=pass (google.com: domain of no.reply.alerts.09@chase.com designates 146.143.72.25 as permitted sender) smtp.mailfrom=no.reply.alerts.09@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Received: from pps.filterd (vsin80p3234.dmz.us.jpmchase.net [127.0.0.1]) by vsin80p3234.jpmchase.com (8.18.1.2/8.18.1.2) with ESMTP id 554JehTC009711 for <breellocaldev@gmail.com>; Wed, 4 Jun 2025 19:43:11 GMT
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chase.com; h=content-transfer-encoding : content-type : date : from : message-id : mime-version : subject : to; s=d4815; bh=rF8v8eIeIYAhxeF3fale6PXDnNUzP2v6MrVz5J+kDO4=; b=gHcZ2j7g3sPVIuyjtV46AuRgSrHoMkqrGuqNs8KbFuiLqjnHFvArirYP4wyLDfjjbuva 3/UHHLjS9KJPMBMnpheaduJpqpISIzTPWZR+t0sOWtnYHBBryuQFqnAlwyyVt8Iu3/lw z4loKQLPd/t2pD4p1qiZLRwftLpA/mKnMAcl2khr7GTHIo8/KP3B0r29yh/w+KNs4IKC a8hQ92Chtq2Sa+naj5ucg+rWsQWrPvb/Mxl8JOrC/uHJ7NQqmeTWxsLkKYI4LdiUCTKn 8PO+EzFJPLxoY+0cbeAzsrjPok6vyjoVB/K2WVaHUKwkloEw2KX3whb+VJoH7aRQbjhH 6w==
|
||||
Received: from vsin53p7503.nanw.jpmchase.net ([169.72.103.155]) by vsin80p3234.dmz.us.jpmchase.net (PPS) with ESMTPS id 472efftmp5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <breellocaldev@gmail.com>; Wed, 04 Jun 2025 19:43:11 +0000
|
||||
Received: from iaasn00692069.nane.jpmchase.net (iaasn00692069.nane.jpmchase.net [169.101.108.220])
|
||||
by vsin53p7503.nanw.jpmchase.net
|
||||
with ESMTP id 554JhA4n017167
|
||||
for <breellocaldev@gmail.com>; Wed, 4 Jun 2025 19:43:11 GMT
|
||||
Date: Wed, 4 Jun 2025 19:43:10 +0000 (UTC)
|
||||
From: Chase <no.reply.alerts@chase.com>
|
||||
To: breellocaldev@gmail.com
|
||||
Message-ID: <1107486429.1219861.1749066190799.JavaMail.webuser@iaasn00692069>
|
||||
Subject: You made an online, phone, or mail transaction with DD *KLUCKSKRISPYCHIC
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
NOTIFICATION-ID: CREDIT_REALTIME_AUTH-48e9c860b8465de975777f4fb83dd401b6344dbc8bda5e349afcf1b90dcfaca7-ver3-95-941c9e20-41c8-3b3c-aefd-f27755b09008
|
||||
RETRY-COUNT: 0
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" />
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1.=
|
||||
0"/>
|
||||
<title>See more details about your transaction.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass =
|
||||
td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.hero {
|
||||
=09width: 100% !important;
|
||||
=09height: auto !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
.font24 {
|
||||
=09font-size: 24px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table align=3D"center" width=3D"100%" border=3D"0" cellspacing=3D"0" cellp=
|
||||
adding=3D"0" style=3D"min-width:800px; background-color:#d7dbe0;" class=3D"=
|
||||
fullWidth">
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding:0px 0px 20px =
|
||||
0px; min-width:800px; background-color:#d7dbe0;" class=3D"fullWidth"><table=
|
||||
align=3D"center" width=3D"800" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0" class=3D"fullWidth" style=3D"background-color:#FFFFFF;">
|
||||
<!-- Start of Content -->
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 23px 0=
|
||||
px 0px;background-color: #005EB8;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:bottom; padding=
|
||||
:0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/=
|
||||
images/blue-left.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:bottom; paddin=
|
||||
g: 0px 0px 0px;width:616px; background-color: #FFFFFF;"><table width=3D"100=
|
||||
%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #ffffff;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<!-- Start hidden preview text -->
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;">See more details about your transaction.</div>
|
||||
|
||||
<!-- Insert ‌ after hidden preview tex=
|
||||
t -->
|
||||
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;"> ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; </div>
|
||||
<!-- End hidden preview text -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding-left: 30px;" class=3D"moPad"><table width=3D"100%" cellpadding=3D"0=
|
||||
" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:bottom; padding:36px 0px 20px;"><img src=3D"https://www.chase.com/content=
|
||||
/dam/email/images/chase-logo-h-rgb.png" width=3D"104" height=3D"20" border=
|
||||
=3D"0" style=3D"display:block;" alt=3D"Chase Logo"/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 20px 28px 0px; background-color: #ffffff;" class=3D"moPad"><table=
|
||||
align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top;"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D=
|
||||
"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:5px 10px; font-family:Arial, Helvetica, sans-serif; fo=
|
||||
nt-size:12px; font-weight:bold; color:#414042; background-color:#D7DBE0; bo=
|
||||
rder-radius:20px; -moz-border-radius: 20px; -webkit-border-radius:20px; whi=
|
||||
te-space: nowrap;" class=3D"font14">Transaction alert</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding: 20px 30px 28px;" class=3D"moPad"><table width=3D"100%" cell=
|
||||
padding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding: 0px 20px 0px 0px;"><img src=3D"https://static.chasecd=
|
||||
n.com/content/services/rendition/image.small.png/unified-assets/digital-car=
|
||||
ds/chase-freedom/freedom-unlimited/41473417013.png" width=3D"57" height=3D=
|
||||
"auto" alt=3D"" border=3D"0" style=3D"display:block;"/></td>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:0px 50px 0px 0px; font-family:Arial, Helvetica, sans-s=
|
||||
erif; font-size:30px; font-weight: bold; color:#414042;" class=3D"zeroPad">=
|
||||
You made an online, phone, or mail transaction</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:bottom; padding:=
|
||||
0px 0px;width:12px; "><img src=3D"https://www.chase.com/content/dam/email/i=
|
||||
mages/blue-right.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 0px 0p=
|
||||
x 0px; background-color: #FFFFFF;"><table cellpadding=3D"0" cellspacing=3D"=
|
||||
0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:top; padding:0p=
|
||||
x 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/ima=
|
||||
ges/white-left.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: =
|
||||
0px 0px 0px;width:616px;"><table width=3D"100%" cellpadding=3D"0" cellspaci=
|
||||
ng=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 150px 0px 30px;" class=3D"moPad"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Account</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Chase Fr=
|
||||
eedom Unlimited Visa (...5876)</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Date</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14"><span cl=
|
||||
ass=3D"applelinksgray41"><a style=3D"color:#414042;text-decoration: none;">=
|
||||
Jun 4, 2025 at 3:43 PM ET</a></span></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Merchant</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">DD *KLUC=
|
||||
KSKRISPYCHIC</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table width=3D"100%"=
|
||||
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Amount</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14"><span cl=
|
||||
ass=3D"applelinksgray41"><a style=3D"color:#414042;text-decoration: none;">=
|
||||
$18.17</a></span></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; p=
|
||||
adding:40px 180px 40px 30px; font-family:Arial, Helvetica, sans-serif; font=
|
||||
-size:16px; color:#414042;" class=3D"moPad">Let us monitor where you saved =
|
||||
your card so you don't have to
|
||||
with this free, easy and secure tool. <a style=
|
||||
=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.chas=
|
||||
e.com/web/auth/nav?navKey=3DrequestBusinessCardOnFile" rel=3D"noopener nore=
|
||||
ferrer" target=3D"_blank">Get started</a>.</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;"><tab=
|
||||
le width=3D"100%" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=
|
||||
=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table width=3D"200" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" b=
|
||||
order=3D"0" class=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"padding:0px; =
|
||||
vertical-align:top; padding: 0px 0px 30px 30px;" class=3D"moPad"><table ali=
|
||||
gn=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"verti=
|
||||
cal-align:top;">
|
||||
<tr>
|
||||
<td role=3D"button" align=3D"center=
|
||||
" style=3D"background-color:#0060f0; color: #fffffe; font-size: 16px; font-=
|
||||
family: Arial, Helvetica, sans-serif; padding: 10px 0px; border: 1px solid =
|
||||
#0060f0; vertical-align:top; border-radius:4px; -moz-border-radius: 4px; -w=
|
||||
ebkit-border-radius:4px;width: 168px;"><a href=3D"https://secure.chase.com/=
|
||||
web/auth/nav?navKey=3DrequestDashboard" target=3D"_blank" style=3D"color: #=
|
||||
fffffe; text-decoration:none;">Review account</a></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:0px 30px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12px;=
|
||||
color:#717171;" class=3D"moPad font14">Securely access your accounts with =
|
||||
the <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https:/=
|
||||
/www.chase.com/digital/mobile-banking" rel=3D"noopener noreferrer" target=
|
||||
=3D"_blank">Chase Mobile<span style=3D"font-size:70%; line-height:0; v=
|
||||
ertical-align:3px; text-decoration: none;">®</span> app</a> or <a style=
|
||||
=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.chas=
|
||||
e.com/web/auth/nav?navKey=3DrequestDashboard" rel=3D"noopener noreferrer" =
|
||||
target=3D"_blank">chase.com</a>. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #F6F6F6;"><table width=3D"100%" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding:20px 30px 60px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:12px; color:#717171;" class=3D"moPad font14"><span role=3D"heading" style=
|
||||
=3D"text-transform: uppercase; font-weight: bold;">About this message</span=
|
||||
><br />
|
||||
<br />
|
||||
Chase Mobile<span style=3D"font-size:70%=
|
||||
; line-height:0; vertical-align:3px;">®</span> app is available for se=
|
||||
lect mobile devices. Message and data rates may apply.<br />
|
||||
<br />
|
||||
This service email was sent based on your ale=
|
||||
rt settings. Use the Chase Mobile app or visit <a href=3D"https://www.=
|
||||
chase.com/personal/mobile-online-banking/login-alerts" target=3D"_blank" st=
|
||||
yle=3D"text-decoration: underline; color:#0060F0;" rel=3D"noopener noreferr=
|
||||
er">chase.com/alerts</a> to view or manage your settings.<br />
|
||||
<br />
|
||||
Chase cannot guarantee the delivery of alerts=
|
||||
and notifications. Wireless or internet service provider outages or other =
|
||||
circumstances could delay them. You can always check <span class=3D"appleli=
|
||||
nksgray"><a style=3D"color:#717171;text-decoration: none;">chase.com</a></s=
|
||||
pan> or the Chase Mobile app for the status of your accounts including=
|
||||
your latest account balances and transaction details.<br />
|
||||
<br />
|
||||
To protect your personal information, please =
|
||||
don't reply to this message. Chase won't ask for confidential information i=
|
||||
n an email. <br />
|
||||
<br />
|
||||
If you have concerns about the authenticity o=
|
||||
f this message or have questions about your account visit <a style=3D"text-=
|
||||
decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/digita=
|
||||
l/customer-service" target=3D"_blank" rel=3D"noopener noreferrer">chase.com=
|
||||
/CustomerService</a> for ways to contact us.<br />
|
||||
<br />
|
||||
Your privacy is important to us. See our onli=
|
||||
ne <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https://=
|
||||
www.chase.com/digital/resources/privacy-security" target=3D"_blank" rel=3D"=
|
||||
noopener noreferrer">Security Center</a> to learn how to protect your infor=
|
||||
mation.<br />
|
||||
<br />
|
||||
© 2025 JPMorgan Chase & Co. </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:top; padding:0px=
|
||||
0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/imag=
|
||||
es/white-right.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!--End of Content -->
|
||||
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,460 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6022:9201:b0:72:1e7d:3888 with SMTP id da1csp605545lab;
|
||||
Thu, 5 Jun 2025 19:07:07 -0700 (PDT)
|
||||
X-Google-Smtp-Source: AGHT+IE+moNfFhXJTJvvdmPs/w/Vts7d+VkwUju2TbMUnkpSCDhDLZxYSC6SVeKH9qQ26rMWYzr4
|
||||
X-Received: by 2002:a05:620a:1a23:b0:7d0:9ffd:4240 with SMTP id af79cd13be357-7d229933921mr325162385a.55.1749175627255;
|
||||
Thu, 05 Jun 2025 19:07:07 -0700 (PDT)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1749175627; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=SfoZtzKcm9L5kaOTQKOF8wEN8vAPSa+H38CyuvZJYmO4kzMB1yRKQOAilXThduLFbT
|
||||
9NrbZjM+0mIbHVQm/lF0NSKV04UBMFkxAUBATsXNO69RLCxtO5RrxvZYn2L49thzuhbT
|
||||
usSuj7Im6vZ+tz5ze4WJGGHawDcnqnKgEVnm848sKo8woBtXElDMo6nryqN7CuuovvWW
|
||||
MptLzwgU612lBpahTHfNYNqws7PsTqbC4wfhMoqnkcxfjrC9m47MgzywL3QRlLhPX2kV
|
||||
i8wOpbS+K+erFfNlzZV0FiUbiY8A/K6o2fcBaiNkXvuLximJiOAHTmxws24i4TMl2SJi
|
||||
bGIw==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=retry-count:notification-id:content-transfer-encoding:mime-version
|
||||
:subject:message-id:to:from:date:dkim-signature;
|
||||
bh=lnABD7nCflWxnAXhTOyo6zRvYYLTdV0caaqTQPlvs7A=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=f5s9zvAULbp6Qu4JmCkGMNAAeSRlFlj+jLMCr1q8H2XbW/fh8MYdmocgy19QABq9BY
|
||||
kBJHlV2UA1bbodmtJlBWmFymJo8FAzm7eUoepJ4CWWctm17xhxbJ6uO6judb9xPKxA1I
|
||||
57XXLQMSighE3qYBN9vnPyk0lgkN7zP/Cu/TV4fr6zXzdIBQKBv5tr93EvUdlt9S/MbL
|
||||
rU1xeiFenksejp9Bhfd5h1IzYDb8y4/rB7558x1TCxo6MaIfZpR94f554H8/kjivTQMV
|
||||
d/oPCSKsqcpEfaCRbOSm1V6e4G9HOzmOpTrGL8GFUF1/df2Z2gmSPYUnC5gJljSBiQVz
|
||||
UR/Q==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=LdKPsfJ6;
|
||||
spf=pass (google.com: domain of no.reply.alerts.11@chase.com designates 146.143.136.25 as permitted sender) smtp.mailfrom=no.reply.alerts.11@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Return-Path: <no.reply.alerts.11@chase.com>
|
||||
Received: from vsin80p3228.jpmchase.com (vsin80p3228.jpmchase.com. [146.143.136.25])
|
||||
by mx.google.com with ESMTPS id af79cd13be357-7d25a5f0fa7si79799685a.266.2025.06.05.19.07.07
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Thu, 05 Jun 2025 19:07:07 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: domain of no.reply.alerts.11@chase.com designates 146.143.136.25 as permitted sender) client-ip=146.143.136.25;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@chase.com header.s=d4815 header.b=LdKPsfJ6;
|
||||
spf=pass (google.com: domain of no.reply.alerts.11@chase.com designates 146.143.136.25 as permitted sender) smtp.mailfrom=no.reply.alerts.11@chase.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=chase.com
|
||||
Received: from pps.filterd (vsin80p3228.dmz.us.jpmchase.net [127.0.0.1]) by vsin80p3228.jpmchase.com (8.18.1.2/8.18.1.2) with ESMTP id 555Nje8s003429 for <breellocaldev@gmail.com>; Fri, 6 Jun 2025 02:07:06 GMT
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chase.com; h=content-transfer-encoding : content-type : date : from : message-id : mime-version : subject : to; s=d4815; bh=lnABD7nCflWxnAXhTOyo6zRvYYLTdV0caaqTQPlvs7A=; b=LdKPsfJ6BvS0A55LRUSug3cAoDccuMxnqIdO4fmxSvJYXpgmhAEbyOHwrrq0OZOFr8XC TeMVIfDxg1P3pfUZHvtgm2QKERByVDGfSv+kiII9yIj0bpbt+6//REssh5RyjxKbCaU/ iL8XHeRmetjBbiqhoj8A4b9NN3wgt25QtFRzemuiGUa78CtX+fqTL6KJOlygtXv7otNB Ci3X1JWdv/hb7t0PVplmKmABVPuVAxdiUeZWCiBbgxq8xCYSK5YTZasqF4uoro0u1q8K BhqZsx/Yd8HVO9Y1PstG+04XGhz1dbJk2WXKEfa7IhLU9eHrov3nqdukTxH6kACj9DAs 1A==
|
||||
Received: from vsin52p7465.nanw.jpmchase.net ([169.74.48.181]) by vsin80p3228.dmz.us.jpmchase.net (PPS) with ESMTPS id 470cwruea9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <breellocaldev@gmail.com>; Fri, 06 Jun 2025 02:07:06 +0000
|
||||
Received: from iaasn00692068.nane.jpmchase.net (iaasn00692068.nane.jpmchase.net [169.101.122.220])
|
||||
by vsin52p7465.nanw.jpmchase.net
|
||||
with ESMTP id 5562753I004398
|
||||
for <breellocaldev@gmail.com>; Fri, 6 Jun 2025 02:07:05 GMT
|
||||
Date: Fri, 6 Jun 2025 02:07:05 +0000 (UTC)
|
||||
From: Chase <no.reply.alerts@chase.com>
|
||||
To: breellocaldev@gmail.com
|
||||
Message-ID: <1155623531.3989104.1749175625501.JavaMail.webuser@iaasn00692068>
|
||||
Subject: You made a $3.42 transaction with Nintendo CB141137080
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
NOTIFICATION-ID: CREDIT_REALTIME_AUTH-770c6a3a398615aa3e43ca933e45e0d7505968eebcc33b814c913513bf149e99-ver3-3-941c9e20-41c8-3b3c-aefd-f27755b09008
|
||||
RETRY-COUNT: 0
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en">
|
||||
<head>
|
||||
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" />
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1.=
|
||||
0"/>
|
||||
<title>This transaction is above the level you set, see more here.</title>
|
||||
<style type=3D"text/css">
|
||||
* {
|
||||
=09line-height: normal !important;
|
||||
}
|
||||
strong {
|
||||
=09font-weight: bold !important;
|
||||
}
|
||||
em {
|
||||
=09font-style: italic !important;
|
||||
}
|
||||
body {
|
||||
=09background-color: #d7dbe0 !important;
|
||||
=09-webkit-text-size-adjust: none !important;
|
||||
}
|
||||
.ExternalClass * {
|
||||
=09line-height: 112%
|
||||
}
|
||||
.ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass =
|
||||
td {
|
||||
=09line-height: 112%
|
||||
}
|
||||
td {
|
||||
=09-webkit-text-size-adjust: none;
|
||||
}
|
||||
a[href^=3Dtel] {
|
||||
=09color: inherit;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray41 a {
|
||||
=09color: #414042 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.applelinksgray a {
|
||||
=09color: #717171 !important;
|
||||
=09text-decoration: none;
|
||||
}
|
||||
.wordBreak {
|
||||
=09overflow-wrap: break-word;
|
||||
=09word-wrap: break-word;
|
||||
=09word-break: break-all;
|
||||
=09word-break: break-word;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media print and (max-width: 800px) {
|
||||
.fullWidth {
|
||||
=09width: 100% !important;
|
||||
=09min-width: 100% !important;
|
||||
=09margin-left: auto !important;
|
||||
=09margin-right: auto !important;
|
||||
=09padding: 0px !important;
|
||||
=09text-align: center !important;
|
||||
}
|
||||
.moPad {
|
||||
=09padding-right: 20px !important;
|
||||
=09padding-left: 20px !important;
|
||||
}
|
||||
.zeroPad {
|
||||
=09padding-right: 0px !important;
|
||||
=09padding-left: 0px !important;
|
||||
}
|
||||
.font14 {
|
||||
=09font-size: 14px !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body style=3D"padding: 0px;margin: 0px; background-color:#d7dbe0;">
|
||||
<table role=3D"presentation" align=3D"center" width=3D"100%" border=3D"0" c=
|
||||
ellspacing=3D"0" cellpadding=3D"0" style=3D"min-width:800px; background-col=
|
||||
or:#d7dbe0;" class=3D"fullWidth">
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding:0px 0px 20px =
|
||||
0px; min-width:800px; background-color:#d7dbe0;" class=3D"fullWidth"><table=
|
||||
role=3D"presentation" align=3D"center" width=3D"800" cellpadding=3D"0" cel=
|
||||
lspacing=3D"0" border=3D"0" class=3D"fullWidth" style=3D"background-color:#=
|
||||
FFFFFF;">
|
||||
<!-- Start of Content -->
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 23px 0=
|
||||
px 0px;background-color: #005EB8;"><table role=3D"presentation" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:bottom; padding=
|
||||
:0px 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/=
|
||||
images/blue-left.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:bottom; paddin=
|
||||
g: 0px 0px 0px;width:616px; background-color: #FFFFFF;"><table role=3D"pres=
|
||||
entation" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px;"><table role=3D"presentation" width=3D"100%" cellpadding=3D"0"=
|
||||
cellspacing=3D"0" border=3D"0">
|
||||
<!-- Start hidden preview text -->
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;">This transaction is above the level you set, see more here.=
|
||||
</div>
|
||||
|
||||
<!-- Insert ‌ after hidden preview tex=
|
||||
t -->
|
||||
|
||||
<div style=3D"display: none; max-height: 0px; ove=
|
||||
rflow: hidden;"> ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; ‌ ‌ ‌ ‌ ‌ ‌&=
|
||||
nbsp;‌ ‌ ‌ ‌ ‌ ‌&nbs=
|
||||
p;‌ ‌ ‌ ‌ ‌ ‌ &=
|
||||
zwnj; ‌ ‌ ‌ ‌ ‌ &zwn=
|
||||
j; </div>
|
||||
<!-- End hidden preview text -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding-left: 30px;" class=3D"moPad"><table role=3D"presentation" width=3D"=
|
||||
100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:bottom; padding:36px 0px 20px;"><img src=3D"https://www.chase.com/content=
|
||||
/dam/email/images/chase-logo-h-rgb.png" width=3D"104" height=3D"20" border=
|
||||
=3D"0" style=3D"display:block;" alt=3D"Chase Logo"/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 20px 28px 0px;" class=3D"moPad"><table role=3D"presentation" alig=
|
||||
n=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top;"><table role=3D"presentation" width=3D"100%" cellpadding=3D"0" cells=
|
||||
pacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:5px 10px; font-family:Arial, Helvetica, sans-serif; fo=
|
||||
nt-size:12px; font-weight:bold; color:#414042; background-color:#D7DBE0; bo=
|
||||
rder-radius:20px; -moz-border-radius: 20px; -webkit-border-radius:20px; whi=
|
||||
te-space: nowrap;" class=3D"font14">Transaction alert</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!-- End category pill -->
|
||||
|
||||
<!-- Start Headline -->
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
"><table role=3D"presentation" width=3D"100%" cellpadding=3D"0" cellspacing=
|
||||
=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding: 20px 30px 28px;" class=3D"moPad"><table role=3D"presentatio=
|
||||
n" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding: 0px 20px 0px 0px;"><img src=3D"https://static.chasecd=
|
||||
n.com/content/services/rendition/image.small.png/unified-assets/digital-car=
|
||||
ds/chase-freedom/freedom-unlimited/41473417013.png" width=3D"57" height=3D"=
|
||||
auto" alt=3D"" border=3D"0" style=3D"display:block;"/></td>
|
||||
|
||||
<td align=3D"left" style=3D"vertica=
|
||||
l-align:top; padding:0px 50px 0px 0px; font-family:Arial, Helvetica, sans-s=
|
||||
erif; font-size:30px; font-weight: bold; color:#414042;" class=3D"zeroPad">=
|
||||
You made a $3.42 transaction</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:bottom; padding:=
|
||||
0px 0px;width:12px; "><img src=3D"https://www.chase.com/content/dam/email/i=
|
||||
mages/blue-right.jpg" width=3D"12" height=3D"226" border=3D"0" style=3D"dis=
|
||||
play:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: 0px 0p=
|
||||
x 0px; background-color: #FFFFFF;"><table role=3D"presentation" cellpadding=
|
||||
=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"right" style=3D"vertical-align:top; padding:0p=
|
||||
x 0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/ima=
|
||||
ges/white-left.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
<td align=3D"center" style=3D"vertical-align:top; padding: =
|
||||
0px 0px 0px;width:616px;"><table role=3D"presentation" width=3D"100%" cellp=
|
||||
adding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 150px 0px 30px;" class=3D"moPad"><table role=3D"presentation" width=
|
||||
=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table role=3D"presen=
|
||||
tation" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Account</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Chase Fr=
|
||||
eedom Unlimited Visa (...5876)</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table role=3D"presen=
|
||||
tation" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Date</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14"><span cl=
|
||||
ass=3D"applelinksgray41"><a style=3D"color:#414042;text-decoration: none;">=
|
||||
Jun 5, 2025 at 10:07 PM ET</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table role=3D"presen=
|
||||
tation" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Merchant</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">Nintendo=
|
||||
CB141137080</td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding: 10px 0px;border-bottom: solid 1px #414042;"><table role=3D"presen=
|
||||
tation" width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-alig=
|
||||
n:top; padding:0px 0px 0px 0px; font-family:Arial, Helvetica, sans-serif; f=
|
||||
ont-size:16px; color:#414042;" class=3D"font14">Amount</td>
|
||||
<td align=3D"right" style=3D"vertical-ali=
|
||||
gn:top; padding:0px 0px 0px 5px; font-family:Arial, Helvetica, sans-serif; =
|
||||
font-size:16px; font-weight:bold; color:#414042;" class=3D"font14">$3.42</t=
|
||||
d>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; pad=
|
||||
ding:40px 150px 40px 30px; font-family:Arial, Helvetica, sans-serif; font-s=
|
||||
ize:16px; color:#414042;" class=3D"moPad">You are receiving this alert beca=
|
||||
use your transaction was more than the $0.00 level you set. You can visit o=
|
||||
ur <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https://=
|
||||
www.chase.com/personal/credit-cards/card-resource-center" rel=3D"noopener n=
|
||||
oreferrer" target=3D"_blank">Resource Center</a> anytime to help answer yo=
|
||||
ur questions or manage your account.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"padding:0px; vertical-ali=
|
||||
gn:top; padding: 0px 0px 30px 30px;" class=3D"moPad"><table role=3D"present=
|
||||
ation" align=3D"left" cellpadding=3D"0" cellspacing=3D"0" border=3D"0" styl=
|
||||
e=3D"vertical-align:top;">
|
||||
<tr>
|
||||
<td role=3D"button" align=3D"center" style=3D"b=
|
||||
ackground-color:#0060f0; color: #fffffe; font-size: 16px; font-family: Aria=
|
||||
l, Helvetica, sans-serif; padding: 10px 0px; border: 1px solid #0060f0; ver=
|
||||
tical-align:top; border-radius:4px; -moz-border-radius: 4px; -webkit-border=
|
||||
-radius:4px;width: 168px;"><a href=3D"https://secure.chase.com/web/auth/nav=
|
||||
?navKey=3DrequestDashboard" target=3D"_blank" style=3D"color: #fffffe; text=
|
||||
-decoration:none;">Review account</a></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng:0px 30px 20px; font-family:Arial, Helvetica, sans-serif; font-size:12px;=
|
||||
color:#717171;" class=3D"moPad font14">Securely access your accounts with =
|
||||
the <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https:/=
|
||||
/www.chase.com/digital/mobile-banking" rel=3D"noopener noreferrer" target=
|
||||
=3D"_blank">Chase Mobile<span style=3D"font-size:70%; line-height:0; v=
|
||||
ertical-align:3px; text-decoration: none;">®</span> app</a> or <a style=
|
||||
=3D"text-decoration: underline; color:#0060F0;" href=3D"https://secure.chas=
|
||||
e.com/web/auth/nav?navKey=3DrequestDashboard" rel=3D"noopener noreferrer" =
|
||||
target=3D"_blank">chase.com</a>. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top; paddi=
|
||||
ng: 0px 0px; background-color: #F6F6F6;"><table role=3D"presentation" width=
|
||||
=3D"100%" cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
|
||||
<tr>
|
||||
<td align=3D"left" style=3D"vertical-align:top;=
|
||||
padding:20px 30px 60px; font-family:Arial, Helvetica, sans-serif; font-siz=
|
||||
e:12px; color:#717171;" class=3D"moPad font14"><span role=3D"heading" style=
|
||||
=3D"text-transform: uppercase; font-weight: bold;">About this message</span=
|
||||
><br />
|
||||
<br />
|
||||
Chase Mobile<span style=3D"font-size:70%=
|
||||
; line-height:0; vertical-align:3px;">®</span>=C2=A0app is available f=
|
||||
or select mobile devices. Message and data rates may apply.<br />
|
||||
<br />
|
||||
This service email was sent based on your ale=
|
||||
rt settings. Use the Chase Mobile app or visit <a href=3D"https://www.=
|
||||
chase.com/personal/mobile-online-banking/login-alerts" target=3D"_blank" st=
|
||||
yle=3D"text-decoration: underline; color:#0060F0;" rel=3D"noopener noreferr=
|
||||
er">chase.com/alerts</a> to view or manage your settings.<br />
|
||||
<br />
|
||||
Chase cannot guarantee the delivery of alerts=
|
||||
and notifications.=C2=A0Wireless or internet service provider outages or o=
|
||||
ther circumstances could delay them. You can always check <span class=3D"ap=
|
||||
plelinksgray"><a style=3D"color:#717171;text-decoration: none;">chase.com</=
|
||||
a></span> or the Chase Mobile=C2=A0app for the status of your accounts=
|
||||
including your latest account balances and transaction details.=C2=A0<br /=
|
||||
>
|
||||
<br />
|
||||
To protect your personal information, please =
|
||||
don't reply to this message. Chase won't ask for confidential information i=
|
||||
n an email. <br />
|
||||
<br />
|
||||
If you have concerns about the authenticity o=
|
||||
f this message or have questions about your account visit <a style=3D"text-=
|
||||
decoration: underline; color:#0060F0;" href=3D"https://www.chase.com/digita=
|
||||
l/customer-service" target=3D"_blank" rel=3D"noopener noreferrer">chase.com=
|
||||
/CustomerService</a> for ways to contact us.<br />
|
||||
<br />
|
||||
Your privacy is important to us. See our onli=
|
||||
ne <a style=3D"text-decoration: underline; color:#0060F0;" href=3D"https://=
|
||||
www.chase.com/digital/resources/privacy-security" target=3D"_blank" rel=3D"=
|
||||
noopener noreferrer">Security Center</a> to learn how to protect your infor=
|
||||
mation.<br />
|
||||
<br />
|
||||
© 2025 JPMorgan Chase & Co. </td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
<td align=3D"left" style=3D"vertical-align:top; padding:0px=
|
||||
0px; width:12px;"><img src=3D"https://www.chase.com/content/dam/email/imag=
|
||||
es/white-right.jpg" width=3D"12" height=3D"77" border=3D"0" style=3D"displa=
|
||||
y:block;" alt=3D""/></td>
|
||||
</tr>
|
||||
</table></td>
|
||||
</tr>
|
||||
<!--End of Content -->
|
||||
=20
|
||||
</table></td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:a05:6022:841f:b0:65:30d1:7dd8 with SMTP id cd31csp2236378lab;
|
||||
Mon, 13 Jan 2025 23:12:32 -0800 (PST)
|
||||
X-Google-Smtp-Source: AGHT+IGzcvzUeoSHy9weRVPEN80i7klhLA5WFNCceEUieFFQlZbSflLGUQjDFpsW5D9aHLZTkoKk
|
||||
X-Received: by 2002:a05:620a:4494:b0:7b6:d710:2282 with SMTP id af79cd13be357-7bcd9764e4bmr4052577585a.49.1736838752584;
|
||||
Mon, 13 Jan 2025 23:12:32 -0800 (PST)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1736838752; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=MFiRJLSDXgvdRnFQMIDv2plhY999E2EheBn6MnebrFQlYqgD1TLUKCYMU7eT1qJy/v
|
||||
c0JAUxIfgbzFOpPIO7pHJDZP4WDoRhej8Gh3qSYcHXFLtZHWj0wbDQDoXK16wSgUsJWW
|
||||
7/dd5ozpiYuyaDI/1tA1OUSR062gYORAdr11zmOYt1Uc+tcjXKnzPA67XIwSFi+Az6am
|
||||
qlrv8bg1Qn9b/xTHlQfVOFNIiSoyM3ftmitaGBfXJ1GunB/xA/gwEh36nbnTc/7r7Pp8
|
||||
8or7OdOq9s0anbYTo7xkluQ+Hj9lE8w5B80ugiA1DuLrSY9+4RYmp4pJ5HzV3V+L5vBd
|
||||
ZUjQ==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=message-id:reply-to:subject:from:to:dkim-signature:date;
|
||||
bh=IBSexcmXnA6APE8uxbjJm+VKBGCbhSeCXT8D1g6eZ1w=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=XPb7aldXPvreTtcrvTw4vjE/In1umhczsRboGdb2vgrv37O8x+5VoE2AME6WtdLNHn
|
||||
phmCPM8S9eW83lR17pk6T/jbWtrQUIcKmZhKXzLTVj1qofy2SP09kTF7p/1g/IChhmT3
|
||||
//gYi3MGISpt0sjFMaxFgN8gK5V2qTbcFiYBa3bkCgZYuvbc7N7TqPplKDMNIAq7qse+
|
||||
daSLuYoWMb83N1lSKO5njyFgWzWt6kLzfZVj+Mr05z5n45pWg4T82NcY2q2ZW0aTJI4t
|
||||
9tbNDXkpkG4/iboDAe1xdOXtSmay6trbzYzIsXBjDD6XBLmewPWZ4ek7wNzzoGhn4Rn5
|
||||
FW1w==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@fidelity.com header.s=2022-02-04 header.b=KVDNK8Zf;
|
||||
spf=pass (google.com: domain of fidelity.alerts@fidelity.com designates 155.199.72.10 as permitted sender) smtp.mailfrom=Fidelity.Alerts@fidelity.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fidelity.com
|
||||
Return-Path: <Fidelity.Alerts@fidelity.com>
|
||||
Received: from ltm-fwomaa109-110-vlan230.fidelity.com (ltm-fwomaa109-110-vlan230.fidelity.com. [155.199.72.10])
|
||||
by mx.google.com with ESMTPS id af79cd13be357-7bce350af33si1300715285a.632.2025.01.13.23.12.32
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
||||
Mon, 13 Jan 2025 23:12:32 -0800 (PST)
|
||||
Received-SPF: pass (google.com: domain of fidelity.alerts@fidelity.com designates 155.199.72.10 as permitted sender) client-ip=155.199.72.10;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@fidelity.com header.s=2022-02-04 header.b=KVDNK8Zf;
|
||||
spf=pass (google.com: domain of fidelity.alerts@fidelity.com designates 155.199.72.10 as permitted sender) smtp.mailfrom=Fidelity.Alerts@fidelity.com;
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=fidelity.com
|
||||
Received: from pps.filterd (PFFWOMA2PVAPP.fmr.com [127.0.0.1]) by PFFWOMA2PVAPP.fmr.com (8.18.1.2/8.18.1.2) with ESMTP id 50E6w3CZ000756 for <breellocaldev@gmail.com>; Tue, 14 Jan 2025 02:12:31 -0500
|
||||
Date: Tue, 14 Jan 2025 02:12:31 -0500
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fidelity.com; h=from : message-id : reply-to : subject : to; s=2022-02-04; bh=IBSexcmXnA6APE8uxbjJm+VKBGCbhSeCXT8D1g6eZ1w=; b=KVDNK8ZfHhv9nj/4YxtK1lmyL8v+qKQdV/7j8iTegeFyxjXg55x9CSgbLane3jsjvI/+ P2PeaTZTNbNNTe864IcZNq2dNdneQC+G16sUX9lWd/YVnHP3EgVYUuhr2d/8DJLhmR/t g0VmQ4Fku359+fgeHAyzotPfbL7F9eVW5itr+oI9UHYGfbDeX9g46t8ZA8W0GYD/wbZY 6U0VFoO3GrkS1WKj2gUk0SPVu74JtyS3i6cmxDSy8BC2ohbtiichUXgGh2XtdS1WLGPh E7ZTXDiaeRUmaZ/CvptkhQf243V6kf1yu/Rwh5dk3r5+N3m3R1vJsOm0guYemThmOs4B 6g==
|
||||
Received: from server (ltm-fwomaa109-110-vlan283.fmr.com [10.1.32.10]) by PFFWOMA2PVAPP.fmr.com (PPS) with ESMTP id 443mv0krnu-210 for <breellocaldev@gmail.com>; Tue, 14 Jan 2025 02:12:31 -0500
|
||||
To: breellocaldev@gmail.com
|
||||
From: Fidelity Investments <Fidelity.Alerts@fidelity.com>
|
||||
Subject: Fidelity Alerts: Daily Balance
|
||||
Reply-To: Fidelity_Investments_Service_DoNotReply@fidelity.com
|
||||
Message-ID: <443mv0krnu-210@PFFWOMA2PVAPP.fmr.com>
|
||||
X-Proofpoint-ORIG-GUID: vODKJqJrtoA_MJzerqUlGVd6tvOLphKx
|
||||
X-Proofpoint-GUID: vODKJqJrtoA_MJzerqUlGVd6tvOLphKx
|
||||
X-Proofpoint-Virus-Version: vendor=nai engine=6700 definitions=11314 signatures=596817
|
||||
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 mlxlogscore=715 adultscore=0 spamscore=0 mlxscore=0 bulkscore=0 suspectscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2411120000 definitions=main-2501140058
|
||||
|
||||
Account: XXXXX5576
|
||||
|
||||
Your Daily Balance is $5,525.52 for 01/14/2025.
|
||||
|
||||
|
||||
Important information:
|
||||
Fidelity automatically emails certain alerts to customers who have provided
|
||||
an email address. You can see the terms which govern these alerts at
|
||||
https://www.fidelity.com/customer-service/alerts-agreement. If you would
|
||||
prefer to not receive these alerts, please change your preferences at
|
||||
https://scs.fidelity.com/customeronly/alerts.shtml.
|
||||
|
||||
Review Fidelity's Terms of Use for Third Party Content and Research at
|
||||
https://www.fidelity.com/terms-of-use#Third.
|
||||
|
||||
If your email has changed, please update your email address
|
||||
at https://alertable.fidelity.com/ftgw/alerts/GetUserDeliveryDevices to continue to
|
||||
receive your alerts.
|
||||
|
||||
Fidelity Brokerage Services LLC, Member NYSE, SIPC
|
||||
|
||||
EMAIL REF# 537048
|
||||
|
||||
Copyright 2025 FMR LLC
|
||||
All rights reserved. Important Legal Information
|
||||
at http://www.fidelity.com/terms-of-use.
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
|
||||
Account: XXXXX5576
|
||||
|
||||
A deposit to your account was received on 12/08/2022.
|
||||
|
||||
|
||||
|
||||
Important information:
|
||||
Fidelity automatically emails certain alerts to customers who have provided
|
||||
an email address. You can see the terms which govern these alerts at
|
||||
https://www.fidelity.com/customer-service/alerts-agreement. If you would
|
||||
prefer to not receive these alerts, please change your preferences at
|
||||
https://scs.fidelity.com/customeronly/alerts.shtml.
|
||||
|
||||
Review Fidelity's Terms of Use for Third Party Content and Research at
|
||||
https://www.fidelity.com/terms-of-use#Third.
|
||||
|
||||
If your email has changed, please update your email address
|
||||
at https://alertable.fidelity.com/ftgw/alerts/GetUserDeliveryDevices to continue to
|
||||
receive your alerts.
|
||||
|
||||
Fidelity Brokerage Services LLC, Member NYSE, SIPC
|
||||
|
||||
EMAIL REF# 537048
|
||||
|
||||
Copyright 2022 FMR LLC
|
||||
All rights reserved. Important Legal Information
|
||||
at http://www.fidelity.com/terms-of-use.
|
||||
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
|
||||
For account ending in 5576:
|
||||
Money was withdrawn from your account through a direct debit in the amount of $1.00 by CHASE CREDIT CRD.
|
||||
|
||||
If you authorized this transaction, no action is needed.
|
||||
If you did not authorize this transaction, please contact us immediately at 800-343-3548.
|
||||
|
||||
|
||||
|
||||
Important information:
|
||||
Fidelity automatically emails certain alerts to customers who have provided
|
||||
an email address. You can see the terms which govern these alerts at
|
||||
https://alertable.fidelity.com/alerts/help/agreement.html. If you would
|
||||
prefer to not receive these alerts, please change your preferences at
|
||||
https://scs.fidelity.com/customeronly/alerts.shtml.
|
||||
This new alerts service will not affect delivery of paper communications
|
||||
you are scheduled to receive.
|
||||
|
||||
To stop receipt of alerts, modify your preferences on the Existing Alerts page
|
||||
at https://scs.fidelity.com/customeronly/fens.shtml, or temporarily
|
||||
stop/restart alerts at
|
||||
https://scs.fidelity.com/customeronly/fens_alertstatus.shtml.
|
||||
|
||||
Fidelity offers access to a broader range of third-party research at
|
||||
http://personal.fidelity.com/research/stocks/content/stocksindex.shtml.
|
||||
Fidelity is not recommending or endorsing any third-party research by making it
|
||||
available to its customers or by notifying customers of its availability.
|
||||
|
||||
Review Fidelity's Terms of Use for Third Party Content and Research at
|
||||
http://activequote.fidelity.com/rtrnews/terms.html.
|
||||
|
||||
If your email has changed, please update your email address
|
||||
at https://scs.fidelity.com/customeronly/fens_profile.shtml to continue to
|
||||
receive your alerts.
|
||||
|
||||
Read Fidelity's Commitment to Privacy
|
||||
at http://personal.fidelity.com/global/search/content/privacy.html.tvsr.
|
||||
|
||||
Visit Fidelity's Home Page
|
||||
http://www.fidelity.com/
|
||||
|
||||
Fidelity Brokerage Services LLC, Member NYSE, SIPC, 900 Salem Street, Smithfield, RI 02917
|
||||
|
||||
EMAIL REF# 537048
|
||||
|
||||
Copyright 2022 FMR LLC
|
||||
All rights reserved. Important Legal Information
|
||||
at http://personal.fidelity.com/misc/legal/legal.html.tvsr.
|
||||
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
Delivered-To: breellocaldev@gmail.com
|
||||
Received: by 2002:ac0:d587:0:b0:36b:891d:d518 with SMTP id f7csp8195321imh;
|
||||
Sun, 19 Oct 2025 20:12:12 -0700 (PDT)
|
||||
X-Google-Smtp-Source: AGHT+IFUgpNCx0iWHjiZ2ACXymtPllyGTHFvg3AZWvOx3YrM5uMz8x77KC3VIs4hxjkggj+ZNRuB
|
||||
X-Received: by 2002:a05:6214:1c43:b0:87c:836:8f21 with SMTP id 6a1803df08f44-87c20594815mr163096026d6.21.1760929932283;
|
||||
Sun, 19 Oct 2025 20:12:12 -0700 (PDT)
|
||||
ARC-Seal: i=1; a=rsa-sha256; t=1760929932; cv=none;
|
||||
d=google.com; s=arc-20240605;
|
||||
b=kApQs1Ymlz+s8G0nYujuPNSJ3cs97QI0fmmz5g3n2bcpxmONxDWSUFjDTYoAJeW+15
|
||||
i/KuwuU1VusVWtJvg7KKJWwkmp7qeYVlkQmxq/v3IaZAM5p+OtJx8WmTqKePpCK5ZuiR
|
||||
qrKdGfZAfnKMvN12F59N0WgHV0+wEMvi6AS2yKzZsVdY7UEq4o//ve3INHO4OeJjo2Uy
|
||||
aXaUxAXGQZeDlv/v4mSSE8I0utowTDiGpEyoSnFUhJk7hmiG26JRF4YHQA/vjAc32mUK
|
||||
jrKNjc15y4vw8LOT2ATm/jgeaZIQ0/8Z0ymQG8sLoQVhWe3WkxUK7Y9MxzLyeWCyCvRV
|
||||
qBhA==
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
|
||||
h=to:message-id:date:subject:from:mime-version:dkim-signature
|
||||
:dkim-signature;
|
||||
bh=k7jGHJ2ljFiolAPU5T6OwM+LnPG+3HzBJixYSB6L+E8=;
|
||||
fh=lrt9myTdNYNEckm/XjduC9YuGfYr3v7r45vYTr/7vKM=;
|
||||
b=iJeycLvOEG6ySvr9T2fxpvTqIGeYBeDcVxW5nrqqdKELVdqBMgHL9axXUn8RdUP8pW
|
||||
RoZSRuNlIOaqCYGtGPjGGD0pWl/wexytBnV6yoHNNwTExfVBr6XvTQ+JPjyTu/L11O09
|
||||
9x2oaN3Dc/JGjKVMMGVcD/AEXrhSjjsQYpNqyq+DADqssWiVgioB4jKCInnjPIgWkqnK
|
||||
i820QlMqRmzZzIi4kR4LFL5uM0MyNwc1SU/l0EUYDBF3BMdOCQ1i2JrAw2hWD28OHjTZ
|
||||
ORHBrQY2THy573M0gL1j83XZz5ph3wBLnHXkYpQYOL/kv7tKdIhIs1aKYobFL7evEKTt
|
||||
zyDw==;
|
||||
dara=google.com
|
||||
ARC-Authentication-Results: i=1; mx.google.com;
|
||||
dkim=pass header.i=@uccu.com header.s=s1 header.b=ICj11Mxp;
|
||||
dkim=pass header.i=@sendgrid.info header.s=smtpapi header.b=v2gr3NCY;
|
||||
spf=pass (google.com: domain of bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com designates 149.72.182.202 as permitted sender) smtp.mailfrom="bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com";
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=uccu.com
|
||||
Return-Path: <bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com>
|
||||
Received: from o1.em.sg.q2ebanking.com (o1.em.sg.q2ebanking.com. [149.72.182.202])
|
||||
by mx.google.com with ESMTPS id 6a1803df08f44-87d02d89698si21675916d6.731.2025.10.19.20.12.12
|
||||
for <breellocaldev@gmail.com>
|
||||
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
|
||||
Sun, 19 Oct 2025 20:12:12 -0700 (PDT)
|
||||
Received-SPF: pass (google.com: domain of bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com designates 149.72.182.202 as permitted sender) client-ip=149.72.182.202;
|
||||
Authentication-Results: mx.google.com;
|
||||
dkim=pass header.i=@uccu.com header.s=s1 header.b=ICj11Mxp;
|
||||
dkim=pass header.i=@sendgrid.info header.s=smtpapi header.b=v2gr3NCY;
|
||||
spf=pass (google.com: domain of bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com designates 149.72.182.202 as permitted sender) smtp.mailfrom="bounces+14101083-c28a-breellocaldev=gmail.com@sg.uccu.com";
|
||||
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=uccu.com
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uccu.com; h=mime-version:from:subject:content-type:date:to:cc:content-type:date: feedback-id:from:subject:to; s=s1; bh=k7jGHJ2ljFiolAPU5T6OwM+LnPG+3HzBJixYSB6L+E8=; b=ICj11Mxph/4neYlK/LfDIN1I/A/STnJE9NBuDTPPuIU5SrWgvbrcHxdSRshjnygf1s6u RLkV/0jB1sMd/5hcmIQu0VLkJLbfpgLt9VAbP4+nNjVLn+YFNYWdgy8Y1eDsA8otUY5MPa E6Ojm1Dx1Z9AHZM/YS4cG5aK+090dDESsMnzpNRhGgLmnVhzR6J9rQj25u0G/g3trM0pNL mdadIuRde77nr/5OszQHLVNr1HRg6kbf4duco9blG05qWMpdbO9HZW83iPKZ5vLsnuTy9i tPxn+Hg6BNPHzI1PysBxgWsbV33VXt1v+J+PTQ5f/Bu4BSvF+fvtwK8Lo5UNRhAQ==
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.info; h=mime-version:from:subject:content-type:date:to:cc:content-type:date: feedback-id:from:subject:to; s=smtpapi; bh=k7jGHJ2ljFiolAPU5T6OwM+LnPG+3HzBJixYSB6L+E8=; b=v2gr3NCY2aTS6WJkQB+uhaChiF3jnvSZDZpZrF4al1Fbm75q0wzWL4kt+m8jZyHzFflr +WpE8JcjyWo0jvhS6VjPUxQzIl2ZbOt0laHQMyQZEZbZQQCjVY8BGBx8wWJKfwRn9569wH +FuyXlox0CHwFCxqfeIVKKBeiIPrtMDsw=
|
||||
Received: by recvd-7f4fb8995-jgz2d with SMTP id recvd-7f4fb8995-jgz2d-1-68F5A88B-E 2025-10-20 03:12:11.990860065 +0000 UTC m=+11874446.569028758
|
||||
Received: from use1-postfix-shs-prd-001a.q2.internal (unknown) by geopod-ismtpd-26 (SG) with ESMTP id 9Jzm7g1dQxW6QvcyQoTs6A for <breellocaldev@gmail.com>; Mon, 20 Oct 2025 03:12:11.966 +0000 (UTC)
|
||||
Received: from localhost (ip-10-233-152-95.ec2.internal [10.233.152.95]) by use1-postfix-shs-prd-001a.q2.internal (Postfix) with UTF8SMTP id C4917B4727 for <breellocaldev@gmail.com>; Mon, 20 Oct 2025 03:12:11 +0000 (UTC)
|
||||
MIME-Version: 1.0
|
||||
From: Notifications@uccu.com
|
||||
Subject: UCCU Account Alert Notification
|
||||
Content-Type: multipart/alternative; boundary=1c6f2f280d6200ff5d69ad23e6f5273369aefc9f9ac30cf0c16c4288a093
|
||||
Date: Mon, 20 Oct 2025 03:12:12 +0000 (UTC)
|
||||
Message-ID: <9Jzm7g1dQxW6QvcyQoTs6A@geopod-ismtpd-26>
|
||||
X-SG-EID: u001.g3f8YwzV+uExvNyHXs20qs20kPT4Xr5yKfd6Jo1DS06qVgodwVcYFczS2kDS38t+kK3dSvo5nZC1MPxUDC3ru0wgAcAHPFVQv8BD/b/gkmc5AuFBZcSIQClE4ZT0W+naP4PHr7dyrI5P8IsN5P6ujZD0kASrUjlUoRuemNpmREOkP4aiIOtJ2tuZrJAeh2feDTZY4aT4tGpvaYcbz3KKFg==
|
||||
To: breellocaldev@gmail.com
|
||||
X-Entity-ID: u001.dyI+c5ymAHdeWQ9Y++I+vA==
|
||||
|
||||
--1c6f2f280d6200ff5d69ad23e6f5273369aefc9f9ac30cf0c16c4288a093
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-Type: text/plain; charset=us-ascii
|
||||
|
||||
This is your requested account alert notification.
|
||||
|
||||
Additional details are available in your online secure mailbox.
|
||||
|
||||
|
||||
As this is an automated reminder, please do not reply to this email.
|
||||
|
||||
|
||||
--1c6f2f280d6200ff5d69ad23e6f5273369aefc9f9ac30cf0c16c4288a093
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-Type: text/html; charset=us-ascii
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.=
|
||||
w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns=3D"http://www.w3.=
|
||||
org/1999/xhtml"><head><meta http-equiv=3D"Content-Type" content=3D"text/htm=
|
||||
l; charset=3Dutf-8" /><title>Secure Banking: Requested Information</title><=
|
||||
/head><body><table width=3D"600" border=3D"0" cellspacing=3D"0" cellpadding=
|
||||
=3D"0" align=3D"center" bgcolor=3D"#ffffff"><tr><td style=3D"line-height:0p=
|
||||
x"><img src=3D"https://cdn1.onlineaccess1.com/cdn/wedge/5138/bank/images/em=
|
||||
aillogo.PNG" width=3D"150" height=3D"47" alt=3D"Utah Community Credit Union=
|
||||
" border=3D"0" style=3D"display:block;" /></td></tr><tr><td style=3D"line-h=
|
||||
eight:0px"><img src=3D"https://cdn1.onlineaccess1.com/cdn/wedge/5138/bank/i=
|
||||
mages/sp.png" width=3D"1" height=3D"40" border=3D"0" style=3D"display:block=
|
||||
;" /></td></tr><tr><td><table width=3D"600" border=3D"0" cellspacing=3D"0" =
|
||||
cellpadding=3D"0"><tr><td width=3D"15"> </td><td width=3D"570" align=3D"lef=
|
||||
t" style=3D"font-family:Arial, Helvetica, sans-serif; color:#000000; font-s=
|
||||
ize:13px; font-weight:bold;">This is your requested Current Balance alert n=
|
||||
otification. Your Current Balance is greater than your specified alert valu=
|
||||
e of 0.000 for Checking ending in 33350. The new Current Balance is $231.20=
|
||||
.<br/><br/>Additional details are available in your online secure mailbox.<=
|
||||
br/><br/><br/>As this is an automated reminder, please do not reply to this=
|
||||
email.<br/><br/></td><td width=3D"15"> </td></tr></table></td></tr><tr><td=
|
||||
style=3D"line-height:0px"><img src=3D"https://cdn1.onlineaccess1.com/cdn/w=
|
||||
edge/5138/bank/images/sp.png" width=3D"1" height=3D"40" border=3D"0" style=
|
||||
=3D"display:block;" /></td></tr><tr><td align=3D"center" style=3D"font-fami=
|
||||
ly:Arial, Helvetica, sans-serif; color:#000000; font-size:10px;">This email=
|
||||
has been automatically generated by request. This electronic transmission =
|
||||
is confidential and is intended for designated recipients only. If you have=
|
||||
received this message in error, please delete the original and all copies =
|
||||
and notify the sender immediately. To ensure that you continue receiving ou=
|
||||
r emails, please add us to your address book or safe list.<br/></td></tr></=
|
||||
table><img src=3D"https://u14101083.ct.sendgrid.net/wf/open?upn=3Du001.2WNV=
|
||||
s8xmQ7XpjpOSgNIvAfchoCyYJSuzcXKuDlb-2FPKacqwLzmLuntClQxOirDnsaiA6Z0cicvkwOH=
|
||||
ph7YcSEi1O5404wbtVB7zLxCqDKkBYnT8HmklJoBCym4NlBju2mEhxg1bf71cLWWJZwGtWyaQKd=
|
||||
x4H0TqqBHskCVE5JG7mrNU10L-2BYehg5Yx3gg-2FdNYkjUEa5H0GD62X3WQwvewRg-3D-3D" a=
|
||||
lt=3D"" width=3D"1" height=3D"1" border=3D"0" style=3D"height:1px !importan=
|
||||
t;width:1px !important;border-width:0 !important;margin-top:0 !important;ma=
|
||||
rgin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important=
|
||||
;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !impo=
|
||||
rtant;padding-left:0 !important;"/></body></html>
|
||||
--1c6f2f280d6200ff5d69ad23e6f5273369aefc9f9ac30cf0c16c4288a093--
|
||||
|
|
@ -22,7 +22,7 @@ func (t *Transaction) Format() string {
|
|||
}
|
||||
|
||||
func (t *Transaction) String() string {
|
||||
return fmt.Sprint(*t)
|
||||
return fmt.Sprintf("%+v", *t)
|
||||
}
|
||||
|
||||
func NewTransaction(account, amount, vendor, date string, bank Bank) *Transaction {
|
||||
|
|
|
|||
39
upload.go
39
upload.go
|
|
@ -3,50 +3,39 @@ package main
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"local/oauth2"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func Upload(config Config, transaction *Transaction) error {
|
||||
switch config.Uploader {
|
||||
case UploaderTodo:
|
||||
return uploadTodo(config, transaction)
|
||||
case DeprecatedUploaderTodo:
|
||||
panic("DEAD")
|
||||
case UploaderLedger:
|
||||
return uploadLedger(config, transaction)
|
||||
case UploaderPTTodo:
|
||||
return uploadPTTodo(config, transaction)
|
||||
default:
|
||||
return errors.New("not impl: uploader")
|
||||
}
|
||||
}
|
||||
|
||||
func uploadTodo(config Config, transaction *Transaction) error {
|
||||
params := url.Values{
|
||||
"list": {config.TodoList},
|
||||
"title": {transaction.Format()},
|
||||
"tag": {config.TodoTag},
|
||||
}
|
||||
req, err := http.NewRequest("POST", config.TodoAddr+"/ajax.php?newTask", strings.NewReader(params.Encode()))
|
||||
func uploadPTTodo(config Config, transaction *Transaction) error {
|
||||
f, err := os.Create(fmt.Sprintf("%s.todo.%s", config.TodoAddr, uuid.New().String()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Set("Cookie", oauth2.COOKIE+"="+config.TodoToken)
|
||||
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
return err
|
||||
defer f.Close()
|
||||
if config.TodoTag == "" {
|
||||
fmt.Fprintf(f, `- {"todo":%q}%s`, transaction.Format(), "\n")
|
||||
} else {
|
||||
fmt.Fprintf(f, `- {"todo":%q, "tags":%q}%s`, transaction.Format(), config.TodoTag, "\n")
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
b, _ := ioutil.ReadAll(resp.Body)
|
||||
return fmt.Errorf("bad status from todo: %v: %s", resp.StatusCode, b)
|
||||
}
|
||||
return nil
|
||||
return f.Close()
|
||||
}
|
||||
|
||||
func uploadLedger(config Config, transaction *Transaction) error {
|
||||
|
|
|
|||
112
upload_test.go
112
upload_test.go
|
|
@ -3,13 +3,123 @@ package main
|
|||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"local/storage"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"gitea.inhome.blapointe.com/local/storage"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func TestUploadPTTodo(t *testing.T) {
|
||||
addr := path.Join(t.TempDir(), "test.upload.pttodo")
|
||||
config := Config{TodoAddr: addr, TodoTag: "expense"}
|
||||
reset := func(t *testing.T) {
|
||||
files, err := filepath.Glob(addr + "*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, f := range files {
|
||||
if f != addr {
|
||||
os.Remove(f)
|
||||
}
|
||||
}
|
||||
}
|
||||
xaction := func() *Transaction {
|
||||
return &Transaction{
|
||||
ID: "id",
|
||||
Bank: UCCU,
|
||||
Amount: "1.23",
|
||||
Vendor: "vendor vendor",
|
||||
Date: "today",
|
||||
}
|
||||
}
|
||||
t.Run("full file", func(t *testing.T) {
|
||||
defer reset(t)
|
||||
if err := ioutil.WriteFile(addr, []byte(`
|
||||
todo:
|
||||
- first
|
||||
- todo: second
|
||||
scheduled: []
|
||||
done: []
|
||||
`), os.ModePerm); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err := uploadPTTodo(config, xaction())
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
files, err := filepath.Glob(addr + ".todo.*")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if len(files) != 1 {
|
||||
t.Fatal(files)
|
||||
}
|
||||
b, err := ioutil.ReadFile(files[0])
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if bytes.Compare(bytes.TrimSpace(b), bytes.TrimSpace([]byte(`- {"todo":"(today) /UCCU: 1.23 @ vendor vendor", "tags":"expense"}`))) != 0 {
|
||||
t.Errorf("full file came out wrong: got %s", b)
|
||||
}
|
||||
if !bytes.Contains(b, []byte(xaction().Format())) {
|
||||
t.Errorf("full file didnt get target: %s", string(b))
|
||||
}
|
||||
t.Logf("%s", b)
|
||||
})
|
||||
t.Run("no file", func(t *testing.T) {
|
||||
defer reset(t)
|
||||
os.Remove(addr)
|
||||
err := uploadPTTodo(config, xaction())
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
files, err := filepath.Glob(addr + ".todo.*")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if len(files) != 1 {
|
||||
t.Fatal(files)
|
||||
}
|
||||
b, err := ioutil.ReadFile(files[0])
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !bytes.Contains(b, []byte(xaction().Format())) {
|
||||
t.Errorf("no file didnt get target: %s", string(b))
|
||||
}
|
||||
t.Logf("%s", b)
|
||||
})
|
||||
t.Run("empty file", func(t *testing.T) {
|
||||
defer reset(t)
|
||||
if err := ioutil.WriteFile(addr, []byte{}, os.ModePerm); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
err := uploadPTTodo(config, xaction())
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
files, err := filepath.Glob(addr + ".todo.*")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if len(files) != 1 {
|
||||
t.Fatal(files)
|
||||
}
|
||||
b, err := ioutil.ReadFile(files[0])
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !bytes.Contains(b, []byte(xaction().Format())) {
|
||||
t.Errorf("empty file didnt get target: %s", string(b))
|
||||
}
|
||||
t.Logf("%s", b)
|
||||
})
|
||||
}
|
||||
|
||||
func TestUploadLedger(t *testing.T) {
|
||||
cases := map[string]struct {
|
||||
transaction Transaction
|
||||
|
|
|
|||
Loading…
Reference in New Issue