Add module to parse Citi and TD emails

master
Nick Krichevsky 2022-09-17 23:17:50 -04:00
parent 4c67d4292b
commit 60eab8dd8d
11 changed files with 3652 additions and 1 deletions

507
Cargo.lock generated
View File

@ -225,6 +225,12 @@ dependencies = [
"stable_deref_trait",
]
[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "bytes"
version = "1.1.0"
@ -281,6 +287,12 @@ dependencies = [
"cache-padded",
]
[[package]]
name = "convert_case"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "core-foundation"
version = "0.9.3"
@ -317,6 +329,33 @@ dependencies = [
"lazy_static",
]
[[package]]
name = "cssparser"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
dependencies = [
"cssparser-macros",
"dtoa-short",
"itoa 0.4.8",
"matches",
"phf 0.8.0",
"proc-macro2",
"quote",
"smallvec",
"syn",
]
[[package]]
name = "cssparser-macros"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "ctor"
version = "0.1.22"
@ -344,6 +383,46 @@ dependencies = [
"syn",
]
[[package]]
name = "derive_more"
version = "0.99.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
"convert_case",
"proc-macro2",
"quote",
"rustc_version",
"syn",
]
[[package]]
name = "dtoa"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
[[package]]
name = "dtoa-short"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6"
dependencies = [
"dtoa",
]
[[package]]
name = "ego-tree"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a68a4904193147e0a8dec3314640e6db742afd5f6e634f428a6af230d9b3591"
[[package]]
name = "either"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
[[package]]
name = "encoding_rs"
version = "0.8.31"
@ -393,6 +472,16 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "futf"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
dependencies = [
"mac",
"new_debug_unreachable",
]
[[package]]
name = "futures"
version = "0.3.21"
@ -503,6 +592,46 @@ dependencies = [
"slab",
]
[[package]]
name = "fxhash"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
dependencies = [
"byteorder",
]
[[package]]
name = "getopts"
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
dependencies = [
"unicode-width",
]
[[package]]
name = "getrandom"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
dependencies = [
"cfg-if",
"libc",
"wasi 0.9.0+wasi-snapshot-preview1",
]
[[package]]
name = "getrandom"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
]
[[package]]
name = "gloo-timers"
version = "0.2.4"
@ -530,6 +659,20 @@ dependencies = [
"libc",
]
[[package]]
name = "html5ever"
version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
dependencies = [
"log",
"mac",
"markup5ever",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "idna"
version = "0.2.3"
@ -569,6 +712,21 @@ dependencies = [
"cfg-if",
]
[[package]]
name = "itertools"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "itoa"
version = "1.0.1"
@ -631,6 +789,12 @@ dependencies = [
"value-bag",
]
[[package]]
name = "mac"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
[[package]]
name = "mailparse"
version = "0.13.8"
@ -642,6 +806,20 @@ dependencies = [
"quoted_printable",
]
[[package]]
name = "markup5ever"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
dependencies = [
"log",
"phf 0.10.1",
"phf_codegen 0.10.0",
"string_cache",
"string_cache_codegen",
"tendril",
]
[[package]]
name = "matches"
version = "0.1.9"
@ -701,6 +879,18 @@ dependencies = [
"tempfile",
]
[[package]]
name = "new_debug_unreachable"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
[[package]]
name = "nodrop"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
[[package]]
name = "nom"
version = "7.1.1"
@ -867,6 +1057,98 @@ version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
[[package]]
name = "phf"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
dependencies = [
"phf_macros",
"phf_shared 0.8.0",
"proc-macro-hack",
]
[[package]]
name = "phf"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
dependencies = [
"phf_shared 0.10.0",
]
[[package]]
name = "phf_codegen"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
dependencies = [
"phf_generator 0.8.0",
"phf_shared 0.8.0",
]
[[package]]
name = "phf_codegen"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
dependencies = [
"phf_generator 0.10.0",
"phf_shared 0.10.0",
]
[[package]]
name = "phf_generator"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
dependencies = [
"phf_shared 0.8.0",
"rand 0.7.3",
]
[[package]]
name = "phf_generator"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
dependencies = [
"phf_shared 0.10.0",
"rand 0.8.5",
]
[[package]]
name = "phf_macros"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
dependencies = [
"phf_generator 0.8.0",
"phf_shared 0.8.0",
"proc-macro-hack",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "phf_shared"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
dependencies = [
"siphasher",
]
[[package]]
name = "phf_shared"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
dependencies = [
"siphasher",
]
[[package]]
name = "pin-project-lite"
version = "0.2.9"
@ -899,6 +1181,18 @@ dependencies = [
"winapi",
]
[[package]]
name = "ppv-lite86"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "precomputed-hash"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@ -923,6 +1217,12 @@ dependencies = [
"version_check",
]
[[package]]
name = "proc-macro-hack"
version = "0.5.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
[[package]]
name = "proc-macro2"
version = "1.0.37"
@ -947,6 +1247,87 @@ version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fee2dce59f7a43418e3382c766554c614e06a552d53a8f07ef499ea4b332c0f"
[[package]]
name = "rand"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom 0.1.16",
"libc",
"rand_chacha 0.2.2",
"rand_core 0.5.1",
"rand_hc",
"rand_pcg",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"ppv-lite86",
"rand_core 0.5.1",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.4",
]
[[package]]
name = "rand_core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
"getrandom 0.1.16",
]
[[package]]
name = "rand_core"
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.7",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core 0.5.1",
]
[[package]]
name = "rand_pcg"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
dependencies = [
"rand_core 0.5.1",
]
[[package]]
name = "redox_syscall"
version = "0.2.13"
@ -982,6 +1363,15 @@ dependencies = [
"winapi",
]
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver",
]
[[package]]
name = "ryu"
version = "1.0.9"
@ -1004,6 +1394,22 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "scraper"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5684396b456f3eb69ceeb34d1b5cb1a2f6acf7ca4452131efa3ba0ee2c2d0a70"
dependencies = [
"cssparser",
"ego-tree",
"getopts",
"html5ever",
"matches",
"selectors",
"smallvec",
"tendril",
]
[[package]]
name = "security-framework"
version = "2.6.1"
@ -1027,6 +1433,32 @@ dependencies = [
"libc",
]
[[package]]
name = "selectors"
version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
dependencies = [
"bitflags",
"cssparser",
"derive_more",
"fxhash",
"log",
"matches",
"phf 0.8.0",
"phf_codegen 0.8.0",
"precomputed-hash",
"servo_arc",
"smallvec",
"thin-slice",
]
[[package]]
name = "semver"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"
[[package]]
name = "serde"
version = "1.0.137"
@ -1059,6 +1491,16 @@ dependencies = [
"yaml-rust",
]
[[package]]
name = "servo_arc"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
dependencies = [
"nodrop",
"stable_deref_trait",
]
[[package]]
name = "signal-hook-registry"
version = "1.4.0"
@ -1079,6 +1521,12 @@ dependencies = [
"time 0.3.9",
]
[[package]]
name = "siphasher"
version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
[[package]]
name = "slab"
version = "0.4.6"
@ -1125,6 +1573,32 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "string_cache"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08"
dependencies = [
"new_debug_unreachable",
"once_cell",
"parking_lot",
"phf_shared 0.10.0",
"precomputed-hash",
"serde",
]
[[package]]
name = "string_cache_codegen"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
dependencies = [
"phf_generator 0.10.0",
"phf_shared 0.10.0",
"proc-macro2",
"quote",
]
[[package]]
name = "syn"
version = "1.0.92"
@ -1150,6 +1624,17 @@ dependencies = [
"winapi",
]
[[package]]
name = "tendril"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
dependencies = [
"futf",
"mac",
"utf-8",
]
[[package]]
name = "termcolor"
version = "1.1.3"
@ -1170,6 +1655,12 @@ dependencies = [
"unicode-width",
]
[[package]]
name = "thin-slice"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
[[package]]
name = "thiserror"
version = "1.0.31"
@ -1207,7 +1698,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
dependencies = [
"itoa",
"itoa 1.0.1",
"libc",
"num_threads",
"time-macros",
@ -1313,6 +1804,12 @@ dependencies = [
"percent-encoding",
]
[[package]]
name = "utf-8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
[[package]]
name = "value-bag"
version = "1.0.0-alpha.9"
@ -1341,6 +1838,12 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca"
[[package]]
name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
@ -1532,8 +2035,10 @@ dependencies = [
"derive-getters",
"futures",
"futures-timer",
"itertools",
"log",
"mailparse",
"scraper",
"serde",
"serde_yaml",
"simplelog",

View File

@ -16,6 +16,8 @@ thiserror = "1.0"
log = "0.4.17"
simplelog = "0.12.0"
async-trait = "0.1.53"
scraper = "0.13.0"
itertools = "0.10.4"
# For annoying reasons, we must pin exactly the same versions as async-imap if we want to use
# their types.

View File

@ -35,6 +35,10 @@ pub struct Message {
}
impl Message {
pub fn new(raw: Vec<u8>) -> Self {
Self { raw }
}
/// Get the raw bytes of this message
pub fn raw(&self) -> &[u8] {
self.raw.as_ref()

View File

@ -24,6 +24,7 @@ const CHANNEL_SIZE: usize = 16;
mod config;
mod email;
mod parse;
pub mod task;
#[cfg(test)]
mod testutil;

87
src/parse.rs Normal file
View File

@ -0,0 +1,87 @@
//! Provides utilities to parse emails for transactions.
pub use citi::EmailParser as CitiEmailParser;
pub use td::EmailParser as TDEmailParser;
use crate::email::Message;
use mailparse::{MailHeader, MailHeaderMap, ParsedMail};
use std::collections::VecDeque;
use thiserror::Error;
mod citi;
mod td;
#[derive(Error, Debug)]
#[error("failed to parse email: {0}")]
pub struct Error(String);
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct Transaction {
payee: String,
amount: String,
}
/// A `TransactionEmailParser` will parse a given email for transaction details
pub trait TransactionEmailParser {
/// Parses a message in hopes of finding a transaction.
///
/// # Errors
/// If no transaction data is found, an Error is returned. This error will likely not be something
/// that is matchable, as it is freeform based on the specific parser.
fn parse_transaction_email(&self, msg: &Message) -> Result<Transaction, Error>;
}
impl Transaction {
pub fn payee(&self) -> &str {
&self.payee
}
pub fn amount(&self) -> &str {
&self.amount
}
}
/// perform a BFS to find a text/html element; this is likely where the actual fun parts of the email are.
/// This might be a bit brittle if any banks ever add more than one of these, but it works with their current
/// emails (Making an iterator for this is actually a bit challenging without GATs, so I'm punting).
fn find_html_subpart<'a, 'inner>(
parsed_mail: &'a ParsedMail<'inner>,
) -> Result<&'a ParsedMail<'inner>, Error> {
let mut to_visit = [parsed_mail].into_iter().collect::<VecDeque<_>>();
while let Some(visiting) = to_visit.pop_front() {
if has_matching_header(visiting, "Content-Type", |header| {
header.get_value().starts_with("text/html;")
}) {
return Ok(visiting);
}
visiting
.subparts
.iter()
.for_each(|subpart| to_visit.push_back(subpart));
}
Err(Error(
"no subpart matched the appropriate content type".to_string(),
))
}
fn has_matching_header<'a, F: FnOnce(&'a MailHeader<'_>) -> bool>(
parsed_mail: &'a ParsedMail<'_>,
header_name: &str,
matcher: F,
) -> bool {
if let Some(header) = parsed_mail.headers.get_first_header(header_name) {
if matcher(header) {
return true;
}
}
false
}
fn has_correct_sender(parsed_mail: &ParsedMail<'_>, expected_sender: &str) -> bool {
has_matching_header(parsed_mail, "From", |header| {
header.get_value() == expected_sender
})
}

114
src/parse/citi.rs Normal file
View File

@ -0,0 +1,114 @@
use itertools::Itertools;
use scraper::{Html, Selector};
use crate::Message;
use super::{Transaction, TransactionEmailParser};
pub struct EmailParser;
impl EmailParser {
pub fn new() -> Self {
Self
}
}
impl TransactionEmailParser for EmailParser {
fn parse_transaction_email(&self, msg: &Message) -> Result<Transaction, super::Error> {
let parsed_mail = msg
.parsed()
.map_err(|err| super::Error(format!("message could not be parsed {:?}", err)))?;
if !super::has_correct_sender(&parsed_mail, "\"Citi Alerts\" <alerts@info6.citi.com>") {
return Err(super::Error("message has incorrect sender".to_string()));
}
let html_part = super::find_html_subpart(&parsed_mail)?;
let html_contents = html_part
.get_body()
.map_err(|err| super::Error(format!("failed to find html body: {:?}", err)))?;
// If these are malformed it's programmer error
let table_selector = Selector::parse("table[role=\"presentation\"]")
.expect("failed to create selector to parse email");
// The Citi emails contain many nested tables, and parsing them all would be cumbersome.
// If, instead, we get all <tds> and iterate over tehir text contents, then we can extrapolate enough info
let td_selector = &Selector::parse("td").expect("failed to create selector to parse email");
let html_document = Html::parse_document(&html_contents);
let table = html_document.select(&table_selector).next();
let td_text_iter = table
.unwrap()
.select(td_selector)
.flat_map(|element| element.text());
let amount = find_amount_from_table_text(td_text_iter.clone())?;
let payee = find_payee_from_table_text(td_text_iter)?;
let trans = Transaction {
amount: amount.to_string(),
payee: payee.to_string(),
};
Ok(trans)
}
}
fn find_payee_from_table_text<'a, I>(table_text_iter: I) -> Result<&'a str, super::Error>
where
I: Iterator<Item = &'a str>,
{
// The Citi emails have two parallel tables, with a heading on the left side and a value on the right.
// In our list, this ends up as something like [..., "Merchant", "The Store", ...]
// So we iterate in pairs until we find what we want.
let maybe_merchant = table_text_iter
.tuples()
.find(|&(label, _)| label == "Merchant")
.map(|(_, value)| value.trim());
maybe_merchant.ok_or_else(|| super::Error("failed to find merchant in html body".to_string()))
}
fn find_amount_from_table_text<'a, I>(mut table_text_iter: I) -> Result<&'a str, super::Error>
where
I: Iterator<Item = &'a str>,
{
let maybe_amount = table_text_iter
.find(|item| item.starts_with("Amount: "))
.map(|item| item.trim_start_matches("Amount: "));
maybe_amount
.ok_or_else(|| super::Error("failed to find transaction amount in html body".to_string()))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_extracts_email_contents() {
let raw_msg = include_bytes!("./testdata/citi/citi.eml");
let msg = Message::new(raw_msg.to_vec());
let parser = EmailParser::new();
let transaction = parser
.parse_transaction_email(&msg)
.expect("failed to parse email");
assert_eq!(
Transaction {
amount: "$3.28".to_string(),
payee: "STOP & SHOP".to_string()
},
transaction
);
}
#[test]
fn test_email_mut_be_from_citi() {
let raw_msg = include_bytes!("./testdata/citi/wrong_sender.eml");
let msg = Message::new(raw_msg.to_vec());
let parser = EmailParser::new();
parser
.parse_transaction_email(&msg)
.expect_err("email should not have parsed");
}
}

85
src/parse/td.rs Normal file
View File

@ -0,0 +1,85 @@
use scraper::{Html, Selector};
use crate::Message;
use super::{Transaction, TransactionEmailParser};
pub struct EmailParser;
impl EmailParser {
pub fn new() -> Self {
Self
}
}
impl TransactionEmailParser for EmailParser {
fn parse_transaction_email(&self, msg: &Message) -> Result<Transaction, super::Error> {
let parsed_mail = msg
.parsed()
.map_err(|err| super::Error(format!("message could not be parsed {:?}", err)))?;
if !super::has_correct_sender(&parsed_mail, "alerts@td.com") {
return Err(super::Error("message has incorrect sender".to_string()));
}
let html_part = super::find_html_subpart(&parsed_mail)?;
let html_contents = html_part
.get_body()
.map_err(|err| super::Error(format!("failed to find html body: {:?}", err)))?;
// If this is malformed it's programmer error
let ul_selector = Selector::parse("ul").expect("failed to create selector to parse email");
let li_selector =
Selector::parse("ul > li").expect("failed to create selector to parse email");
let html_document = Html::parse_document(&html_contents);
let lis = html_document
.select(&ul_selector)
.flat_map(|ul| ul.select(&li_selector))
.flat_map(|li| li.text())
.collect::<Vec<_>>();
if lis.len() != 2 {
return Err(super::Error(
"email did not follow expected HTML structure; could not find list of details"
.to_string(),
));
}
let trans = Transaction {
payee: lis[0].trim_start_matches("Merchant Name: ").to_string(),
amount: format!("${}", lis[1].trim_start_matches("Amount: ")),
};
Ok(trans)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_extracts_email_contents() {
let raw_msg = include_bytes!("./testdata/td/td.eml");
let msg = Message::new(raw_msg.to_vec());
let parser = EmailParser::new();
let transaction = parser
.parse_transaction_email(&msg)
.expect("failed to parse email");
assert_eq!(
Transaction {
amount: "$0.60".to_string(),
payee: "PAYPAL *MARKETPLACE".to_string()
},
transaction
);
}
#[test]
fn test_email_mut_be_from_td() {
let raw_msg = include_bytes!("./testdata/td/wrong_sender.eml");
let msg = Message::new(raw_msg.to_vec());
let parser = EmailParser::new();
parser
.parse_transaction_email(&msg)
.expect_err("email should not have parsed");
}
}

831
src/parse/testdata/citi/citi.eml vendored Normal file
View File

@ -0,0 +1,831 @@
Delivered-To: me@cardholder.com
Received: by 2002:a59:c04d:0:b0:2de:4d02:b586 with SMTP id d13csp4830283vqp;
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
X-Google-Smtp-Source: AA6agR6jEjc9qbM4L0hYWK3BgZ2pe3veLD7DfjkGZs8W4rupSzPLjTuPvBQAHzThP3r01mvri1RT
X-Received: by 2002:a17:907:31c1:b0:742:28a3:5d08 with SMTP id xf1-20020a17090731c100b0074228a35d08mr23116063ejb.112.1663107714138;
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1663107714; cv=none;
d=google.com; s=arc-20160816;
b=WCM4TeIZU5vIeBaFaSCoQltBNWfJZdNdZLRH/zMyskv8D4xR8q8yqrOFVfvFHG5p0F
unk+VtgceEju4N7qjQVnqDXHZtG+iQ4M0moTzp9ihgsEpmaRzzkFOVhU4DvBucJ83Aln
bYLSMzAN4qdAnLkybIU4dvYWzLa+Tclochpwpep81nDNyCYd875Z2yagPqlSd2jBJrCT
Msyke5THXwTp3hLc3aUxBdySAc9aAhoXficBvRfl/M6+SarA5RHrdUJIV12q7yFFZcql
G6QOKNXiLOdv5qFQUNBybcnOEGC/asZFKcb3Tm9FZsyl8gWdl+AiS7EStBAZBSf+MxvD
rKyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=subject:date:to:from:mime-version:list-unsubscribe:errors-to
:dkim-signature:message-id;
bh=oHEH67FpkKXo2UbMQBFHsqapCa7fWy0UfBgNWmbFqOU=;
b=r/BdpqHHOLuCm29tdv6eo76Wrm32VkraFzykOGst+ReyFbynVPhwcObBufembEQZZG
QYIxmD7MmJlDgiwt/fqenIj5Y+sy+VuJx/7SrC274g5kClRlEouM5Bq+lJNNHO370m/t
8PwJV/40z69rizNlhXm6S6CDruN1JxPH8/N9h1LNKigK8sEUTAQodb4J9eVbsDpC24p2
qe8DdHP21yyOEYzkZa/sxxxeZ4hTm5ONlKcLMbyDJ0cpfDZ2ik4A4/KPZj4fTitj3D9R
zX87QJaAYrPb0WfjUEynxSeBrYuNFcLrebnSpAah9jjvOco0fOb/Xj5PwRKrV5DaZT/i
Z5qg==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@info6.citi.com header.s=0 header.b=qrC5KBBn;
spf=pass (google.com: domain of alerts@info6.citi.com designates 63.239.204.147 as permitted sender) smtp.mailfrom=alerts@info6.citi.com;
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=citi.com
Return-Path: <alerts@info6.citi.com>
Received: from p1-204147.info6.citi.com (p1-204147.info6.citi.com. [63.239.204.147])
by mx.google.com with ESMTPS id dn3-20020a17090794c300b0077be1301563si5692673ejc.196.2022.09.13.15.21.53
for <me@cardholder.com>
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
Received-SPF: pass (google.com: domain of alerts@info6.citi.com designates 63.239.204.147 as permitted sender) client-ip=63.239.204.147;
Authentication-Results: mx.google.com;
dkim=pass header.i=@info6.citi.com header.s=0 header.b=qrC5KBBn;
spf=pass (google.com: domain of alerts@info6.citi.com designates 63.239.204.147 as permitted sender) smtp.mailfrom=alerts@info6.citi.com;
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=citi.com
Message-ID: <63210282.170a0220.3aa58.f2a9SMTPIN_ADDED_BROKEN@mx.google.com>
X-Google-Original-Message-ID: <617.aet:8b399a5f-6f58-4dbe-ba97-560368d83ca0.202209132221519529824.0003043630@info6.citi.com>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=0; d=info6.citi.com;
h=Message-ID:List-Unsubscribe:MIME-Version:From:To:Date:Subject:Content-Type;
i=alerts@info6.citi.com;
bh=oHEH67FpkKXo2UbMQBFHsqapCa7fWy0UfBgNWmbFqOU=;
b=qrC5KBBn/xY6T5jfbePrbW9D5vRY5qDOJSfDbOV9FpVrK5IZXz3Fp53G2Ira0XHV34RExG8qawZW
NPysUydzcQSn888LTZJo0Nn83pBuF1dXpVgBQh3Z+KR+tI7gv92adLsJ7Z2fgZp3Tym9zW2ogBJF
9cTXSljBNgmot4Jh0KU=
Received: from NY5PAET01 (10.24.71.38) by p1-204147.info6.citi.com id h441802o8is4 for <me@cardholder.com>; Tue, 13 Sep 2022 18:21:52 -0400 (envelope-from <alerts@info6.citi.com>)
Errors-to: alerts@info6.citi.com
Return-Path: alerts@info6.citi.com<rp-f-C1l2zcsd1q-JoTBtm3Yuly-63lJyNgJ25T-Kj5vwNkx2TA@info6.citi.com>
List-Unsubscribe: <mailto:unsub-f-C1l2zcsd1q-JoTBtm3Yuly-63lJyNgJ25T-Kj5vwNkx2TA@info6.citi.com?subject=Unsubscribe>
X-Mailer: XyzMailer
X-Xyz-cr: 617
X-Xyz-cn: 819
X-Xyz-bcn: 818
X-Xyz-md: 100
X-Xyz-mg: aet:8b399a5f-6f58-4dbe-ba97-560368d83ca0
X-Xyz-et: 114
X-Xyz-pk: 8b399a5f-6f58-4dbe-ba97-560368d83ca0
X-Xyz-ct: 1352
X-Xyz-bct: 1351
X-Xyz-type: aet
X-Xyz-inst: true
MIME-Version: 1.0
From: "Citi Alerts" <alerts@info6.citi.com>
To: "SOMEONE " <me@cardholder.com>
Date: 13 Sep 2022 22:21:51 +0000
Subject: =?utf-8?B?QSAkMy4yOCB0cmFuc2FjdGlvbiB3YXMgbWFkZSBvbiB5b3VyIENpdGnCriBEb3VibGUgQ2FzaCBhY2NvdW50?=
Content-Type: multipart/alternative;
boundary=--boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Citi(R) =0A=0AAdd alerts@info6.citi.com to your address book to e=
nsure delivery.=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=0ASOMEONE =0A=0APlease visit the following link to=
view your message:=0Ahttp://fm.info6.citi.com/ats/msg.aspx?sg1=3D=
8b7a87b9657567cae4df4067fec14be6d52cf918107704a5b3d790cb93a9639a=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=0A=
Privacy=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D133&tp=3Dk-F7=
hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7nnrDu=
bnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0ASecurit=
y=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D134&tp=3Dk-F7hweSyf=
xHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7nnrDubnYX-F=
rDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0AThis email is=
to keep you informed about your Citibank credit card, including =
service updates and other information about your account. Have qu=
estions? Please do not reply to this service email. Instead, just=
Contact Us=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D135&tp=3D=
k-F7hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7n=
nrDubnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0ACit=
ibank Customer Service P. O. Box 6500 Sioux Falls, SD 57117=0A=0A=
=C2=A92022 Citibank, N.A. =0A
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h=
ttp://www.w3.org/TR/html4/loose.dtd"><html lang=3D"en-US"><head><=
title>A $3.28 transaction was made on your Citi=C2=AE Double Cash=
account</title><!-- OpenText Exstream Version 16.4.6 64-bit--><!=
-- CreationDate: 9/13/2022 17:21:46 --><!-- For: Registered to CI=
TIAIX --><style type=3D"text/css">/* MP - Overhaul top.css */.Mo=
bileWidth {width: 420px;}/*Logo + security zone*/.ValignBottom td=
{ vertical-align: bottom;}.SecurityZoneTop > tbody > tr > td:nt=
h-child(2) { width: 51px; vertical-align: middle;}.SecurityZoneT=
op > tbody > tr > td:empty { width: 0; display: none;}.Head=
line { border-radius: 5px 5px 0 0;}.StatementSnap > tbody > tr >=
td > table > tbody > tr:last-child > td { border-bottom: 0!impo=
rtant;}.CTAButton a,.Education a,.BinaryCTA a { display: table-c=
ell; vertical-align: middle; width: 170px;}.SecondaryCTA > tbod=
y > tr > td > table > tbody > tr:nth-child(3) > td > table > tbod=
y > tr > td,.SecondaryCTA > tbody > tr > td > table > tbody > tr:=
nth-child(4) > td > table > tbody > tr > td { line-height: norma=
l!important;}.SecondaryCTA img { vertical-align: top;}.Signoff {=
border-radius: 0 0 5px 5px;}sup, sub { vertical-align: baselin=
e; position: relative; top: -0.4em;}sub { top: 0.4em; }/*Link=
s*/.SamBlueHack a,.SamBlueHack a span { color:#005AA1 !important=
;}.SamGrayHack a,.SamGrayHack a span { color: #666666 !important=
;}.SamWhiteHack a,.SamWhiteHack a span { color: #FFFFFF !importa=
nt;}.SMSButton a,.SMSButton a span { border: none; padding:=
4.75px; text-align: center; text-decoration: none !importa=
nt; display: inline-block; cursor: pointer; color: #FFFF=
FF !important;}@media (max-width: 480px) { .MobileWidth {width: =
320px;} td[class=3D"ShowMobile"] { overflow: visible !importa=
nt; float: none !important; display: table-cell !important;=
line-height:100% !important; } td[class=3D"ShowMobilePLT"] =
{ overflow: visible !important; float: none !important; =
display: table-cell !important; line-height:100% !important; =
} td[class=3D"HideDesktopPLT"] { overflow: visible !important=
; float: none !important; display: none !important; line=
-height:100% !important; } /*Logo header*/ .LogoHeader > tbody=
> tr > td:first-child > table > tbody > tr > td { padding-bot=
tom: 10px !important; } .LogoHeader > tbody > tr > td:last-chil=
d > table > tbody > tr > td { padding-top: 0 !important; } =
/*Statment snapshot*/ .StatementSnap > tbody > tr > td > table >=
tbody > tr > td { display: block; width: 100% !important; =
} .StatementSnap > tbody > tr > td > table > tbody > tr:nth-chi=
ld(3) > td:first-child { border-bottom: 0!important; } .Stat=
ementSnap > tbody > tr > td > table > tbody > tr:nth-child(n+3) >=
td:last-child { padding-top: 0!important; height: auto!imp=
ortant; border-top: 0!important; } .StatementSnap > tbody > =
tr > td > table > tbody > tr:nth-child(n+3) > td:first-child { =
padding-bottom: 0!important; height: auto!important; borde=
r-bottom: 0!important; } /*List of steps*/ .ListOfSteps td:nth=
-child(2) { padding-left: 20px; } /*Action summary v3*/ .Ac=
tionSum3 img { width: 10px !important; margin-bottom: 44px;=
} /*CTA*/ .CTAButton > tbody > tr:first-child > td { paddi=
ng: 15px 0 0 0 !important; } .CTAButton > tbody > tr:first-chil=
d > td > table > tbody > tr > td { padding-right: 30px!importa=
nt; } /*Account links*/ .AccountLinks > tbody > tr > td > tabl=
e { width: 100%!important; } .AccountLinks table table td { =
text-align: left !important; } .AccountLinks > tbody > tr > =
td > table > tbody > tr > td { border-left: 0 !important; b=
order-right: 0 !important; } .AccountLinks > tbody > tr > td { =
border-bottom: #D7D7D7 1px solid; } .AccountLinks > tbody > =
tr > td:last-child { border-bottom: 0 !important; } .Account=
Links img { width: 8px!important; height: 15px!important; =
} .AccountLinks > tbody > tr > td > table > tbody > tr > td:nth-=
child(2) { width: 8px!important; } .AccountLinks > tbody > t=
r > td:nth-child(2) { padding-top: 15px !important; } .Accou=
ntLinks > tbody > tr > td:nth-child(3) { padding-top: 15px !im=
portant; } .AppStore > tbody > tr > td:nth-child(2) { height=
: 7px; } .RewardCertificate td > div { max-width: 260px; =
overflow: visible; } .RewardCertificate div > img { max-wi=
dth: 369px!important; min-width: 369px!important; width: 36=
9px; margin-left: -54px; } .CTAButton a, .Education a { =
width: 260px; } .BinaryCTA a { width: 120px; }}</style><m=
eta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Du=
tf-8"/><style>@media (max-width: 480px){table {width:100%;}img {m=
ax-width:100%; height: auto !important;}table.EX_RESPONSIVE_TABLE=
_480 {display:block;}table.EX_RESPONSIVE_TABLE_480 > tbody {displ=
ay:block;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr {display:blo=
ck;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr > th {display:bloc=
k;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr > td {display:block=
;}table.EX_RESPONSIVE_TABLE_480 table {table-layout: auto !import=
ant;}.EX_RESPONSIVE_HIDE_CELL_480 {display:none !important;}}</st=
yle></head><body><table width=3D"100%" cellpadding=3D"0" cellspac=
ing=3D"0"><tr><td align=3D"center"></table><table cellpadding=3D"=
0" cellspacing=3D"0" width=3D"651" class=3D"MainTable EX_RESPONSI=
VE_TABLE_480" data-experian-nop=3D"EXPERIAN_NOP^ EX_RESPONSIVE_TA=
BLE_480" role=3D"presentation" bgcolor=3D"#EEEEEE" style=3D"bord=
er-collapse: collapse; table-layout: fixed; width: 100%;"><tr><t=
d class=3D"EX_RESPONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0=
"></td></tr><tr><td valign=3D"middle" align=3D"center"><table cel=
lpadding=3D"0" cellspacing=3D"0" width=3D"651" role=3D"presentati=
on" bgcolor=3D"#EEEEEE" class=3D"EX_RESPONSIVE_TABLE_480" style=3D=
"border-collapse: collapse; table-layout: fixed;"><tr><td class=3D=
"EX_RESPONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0"></td></t=
r><tr><td valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"651" class=3D"MainTable" role=3D"p=
resentation" bgcolor=3D"#EEEEEE" style=3D"border-collapse: colla=
pse; table-layout: fixed; width: 100%;"><tr><td class=3D"EX_RESP=
ONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0"></td></tr><tr><t=
d bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table i=
d=3D"ex-textbox67" cellpadding=3D"0" cellspacing=3D"0" width=3D"6=
50" class=3D"FullWidth" style=3D"line-height: normal; border-col=
lapse: separate; width: 100%;"><tr><td width=3D"648" valign=3D"t=
op" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" wid=
th=3D"100%" style=3D"border-collapse: collapse;"><tr><td style=3D=
"margin-top: 0; margin-bottom: 0; font-size: 0;"><span class=3D"=
FullWidth" style=3D"font-family: 'Arial', serif; font-size: 12px=
; line-height: 14px; color:#666666; width: 100%;">View the trans=
action details.</span></td></tr></table></td></tr></table></td></=
tr><tr><td valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"650" class=3D"CategoryBar EX_RESPO=
NSIVE_TABLE_480" role=3D"presentation" style=3D"border-collapse:=
collapse; table-layout: fixed;"><tr><td class=3D"EX_RESPONSIVE_H=
IDE_CELL_480" width=3D"650" height=3D"0"></td></tr><tr><td valign=
=3D"middle" align=3D"center"><table id=3D"ex-textbox68" cellpaddi=
ng=3D"0" cellspacing=3D"0" width=3D"650" class=3D"CategoryBar" b=
gcolor=3D"#002A54" style=3D"line-height: normal; border-collapse:=
separate; padding-bottom: 20px; padding-top: 20px;"><tr><td widt=
h=3D"648" height=3D"20" valign=3D"middle" align=3D"center"><table=
cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"bor=
der-collapse: collapse;"><tr><td class=3D"Category-BarText" styl=
e=3D"margin-top: 0; margin-bottom: 0; font-size: 0; text-align: c=
enter; line-height: 20px;"><img width=3D"20" height=3D"20" src=3D=
"https://snamwpm.eccmp.com/wpm/617/ContentUploads/CRB-Category_Ba=
rs/Apr20_Citi_RGB_CategoryIcon_CustomAlert.png" alt=3D"" style=3D=
" vertical-align: middle;"/><span class=3D"CategoryBar TS-Catego=
ryBar-Text" style=3D"font-family: 'Arial', serif; font-size: 18p=
x; color:#FFFFFF; vertical-align: middle;">=C2=A0CUSTOM ALERT</s=
pan></td></tr></table></td></tr></table></td></tr></table></td></=
tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"=
><table cellpadding=3D"0" cellspacing=3D"0" width=3D"417" class=3D=
"ValignBottom LogoHeader MobileWidth EX_RESPONSIVE_TABLE_480 EX_R=
ESPONSIVE_TABLE_480" role=3D"presentation" style=3D"border-colla=
pse: collapse; table-layout: fixed;"><tr><td class=3D"EX_RESPONSI=
VE_HIDE_CELL_480" width=3D"200" height=3D"0"></td><td class=3D"EX=
_RESPONSIVE_HIDE_CELL_480" width=3D"217" height=3D"0"></td></tr><=
tr><td valign=3D"middle"><table width=3D"200" cellpadding=3D"0" c=
ellspacing=3D"0" style=3D"border-collapse: collapse;"><tr><td wi=
dth=3D"200" align=3D"left" style=3D"padding-bottom: 25px; paddin=
g-top: 25px;"><table cellpadding=3D"0" cellspacing=3D"0" style=3D=
"border-collapse: collapse;"><tr><td width=3D"200" height=3D"19" =
align=3D"left" valign=3D"top"><img id=3D"ex-image17" src=3D"https=
://snamwpm.eccmp.com/wpm/617/ContentUploads/logos/Jan16_CI_SZ_log=
o_citi.png" alt=3D"Citi" class=3D"LogoTop" style=3D"display: blo=
ck;"/></td></tr></table></td></tr></table></td><td valign=3D"bott=
om"><table width=3D"217" cellpadding=3D"0" cellspacing=3D"0" sty=
le=3D"border-collapse: collapse;"><tr><td width=3D"217" align=3D=
"right" style=3D"padding-bottom: 25px; padding-top: 25px;"><table=
cellpadding=3D"0" cellspacing=3D"0" class=3D"SecurityZoneTop Loc=
kIcon" style=3D"border-collapse: collapse;"><tr><td align=3D"lef=
t" valign=3D"top"><table id=3D"ex-textbox69" cellpadding=3D"0" ce=
llspacing=3D"0" width=3D"164" style=3D"line-height: normal; bord=
er-collapse: separate;"><tr><td width=3D"162" valign=3D"top" alig=
n=3D"right"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"1=
00%" style=3D"border-collapse: collapse;"><tr><td class=3D"Secur=
ity-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0=
; text-align: right; line-height: 12px;"><img src=3D"https://acco=
untonline.citi.com/cards/svc/img/logo/CI_SZ_icn_lock.gif" alt=3D"=
Lock Icon"/><span class=3D"TS-Security-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 9px; color:#666666;">=C2=A0Someone=
Cardholder</span></td></tr><tr><td class=3D"Security-Text" styl=
e=3D"margin-top: 0; margin-bottom: 0; font-size: 0; text-align: r=
ight; line-height: 12px;"><span class=3D"TS-Security-Text" style=
=3D"font-family: 'Arial', serif; font-size: 9px; color:#666666;">=
Cardmember since 2021</span></td></tr><tr><td class=3D"Security-T=
ext" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; tex=
t-align: right; line-height: 12px;"><span class=3D"TS-Security-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 9px; color:=
#666666;">Account ending in</span><span class=3D"TS-Security-Text=
" style=3D"font-family: 'Arial', serif; font-size: 9px; color:#6=
66666;">=C2=A0 </span><span class=3D"TS-Security-Text" style=3D"=
font-family: 'Arial', serif; font-size: 9px; color:#666666;">1234=
</span></td></tr></table></td></tr></table></td><td align=3D"left=
" valign=3D"top"><table id=3D"ex-textbox70" cellpadding=3D"0" cel=
lspacing=3D"0" width=3D"53" style=3D"line-height: normal; border=
-collapse: separate; padding-left: 5px;"><tr><td width=3D"46" val=
ign=3D"top" align=3D"right"><img src=3D"https://snamwpm.eccmp.com=
/wpm/617/ContentUploads/cardart/March22_CardArt_DoubleCash.jpg" a=
lt=3D""/></td></tr></table></td></tr></table></td></tr></table></=
td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"m=
iddle" align=3D"center"><table cellpadding=3D"0" cellspacing=3D"0=
" class=3D"MobileWidth" style=3D"border-collapse: collapse;"><tr=
><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox71" cel=
lpadding=3D"0" cellspacing=3D"0" width=3D"420" class=3D"Headline"=
bgcolor=3D"#CCCCCC" style=3D"line-height: normal; border-collap=
se: separate; padding-left: 30px; padding-right: 30px; padding-bo=
ttom: 30px; padding-top: 30px;"><tr><td width=3D"358" valign=3D"t=
op" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" wid=
th=3D"100%" style=3D"border-collapse: collapse;"><tr><td role=3D=
'heading' aria-level=3D'1' class=3D"Headline-Title" style=3D"mar=
gin-top: 0; margin-bottom: 0; font-size: 0; line-height: 36px;"><=
img width=3D"24" height=3D"24" src=3D"https://snamwpm.eccmp.com/w=
pm/617/ContentUploads/Headline/Apr20_Citi_RGB_HeadlineIcon_Custom=
Alert.png" alt=3D""/><span class=3D"Headline TS-Headline-Title" =
style=3D"font-family: 'Arial', serif; font-size: 34px; color:#33=
3333;">=C2=A0A transaction of $3.28 was made on your account</spa=
n></td></tr><tr><td class=3D"Headline-Text" style=3D"margin-top:=
0; margin-bottom: 0; font-size: 0; padding-top: 30px; line-heigh=
t: 20px;"><span class=3D"Headline TS-Headline-Text" style=3D"fo=
nt-family: 'Arial', serif; font-size: 13px; color:#333333;">You'r=
e receiving this email based on your custom alert settings.</span=
></td></tr></table></td></tr></table></td></tr><tr><td align=3D"l=
eft" valign=3D"top"><table id=3D"ex-textbox72" cellpadding=3D"0" =
cellspacing=3D"0" width=3D"420" bgcolor=3D"#008FC9" style=3D"lin=
e-height: normal; border-collapse: separate;"><tr><td width=3D"41=
8" height=3D"5" valign=3D"middle" align=3D"center"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td style=3D"margin-top: 0; margin-bottom: =
0; font-size: 0; text-align: center; line-height: 1;"></td></tr><=
/table></td></tr></table></td></tr></table></td></tr><tr><td bgco=
lor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table cellpad=
ding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlue=
Hack MobileWidth Greeting" style=3D"border-collapse: collapse;">=
<tr><td align=3D"left" valign=3D"top" style=3D"padding-left: 30p=
x; padding-Right: 30px;"><table id=3D"ex-table33" cellpadding=3D"=
0" cellspacing=3D"0" width=3D"360" style=3D"border-collapse: col=
lapse;"><tr><td width=3D"360" height=3D"15" align=3D"left" valig=
n=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></t=
r><tr><td width=3D"360" bgcolor=3D"#EEEEEE" align=3D"left" valig=
n=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px;"><table c=
ellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"borde=
r-collapse: collapse;"><tr><td class=3D"Body-Text" style=3D"marg=
in-top: 0; margin-bottom: 0; font-size: 0; line-height: 20px;"><s=
pan class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif;=
font-size: 13px; color:#333333;">Hi, </span><span class=3D"TS-Bo=
dy-Text" style=3D"font-family: 'Arial', serif; font-size: 13px; =
color:#333333;">Someone</span><span class=3D"TS-Body-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333;=
">. The transaction made on your </span><span class=3D"TS-Body-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 13px; color=
:#333333;">Citi</span><span style=3D"font-family: 'Arial', serif=
; font-size: 13px; color:#333333;"><sup>=C2=AE</sup></span><span =
class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; fon=
t-size: 13px; color:#333333;">=C2=A0Double Cash</span><span class=
=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; font-siz=
e: 13px; color:#333333;">=C2=A0account exceeded $0.00. The transa=
ction details are listed below.</span></td></tr></table></td></tr=
><tr><td width=3D"360" height=3D"15" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr></tab=
le></td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=
=3D"middle" align=3D"center"><table cellpadding=3D"0" cellspacing=
=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlueHack MobileWidth Actio=
nSum2" style=3D"border-collapse: collapse;"><tr><td align=3D"lef=
t" valign=3D"top" style=3D"padding-left: 30px; padding-Right: 30=
px;"><table id=3D"ex-table34" cellpadding=3D"0" cellspacing=3D"0"=
width=3D"360" style=3D"border-collapse: collapse;"><tr><td cols=
pan=3D"2" width=3D"360" height=3D"5" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr><tr><=
td colspan=3D"2" width=3D"360" align=3D"left" valign=3D"top" sty=
le=3D"margin-bottom: 0px; margin-top: 0px; padding-top:10.00px; p=
adding-bottom:15.00px;"><table cellpadding=3D"0" cellspacing=3D"0=
" width=3D"100%" style=3D"border-collapse: collapse;"><tr><td ro=
le=3D'heading' aria-level=3D'2' class=3D"ActionSummaryV2-Title" r=
ole=3D"heading" aria-level=3D"2" style=3D"margin-top: 0; margin-=
bottom: 0; font-size: 0; line-height: 29px;"><span class=3D"TS-Ac=
tionSummaryV2-Title" style=3D"font-family: 'Arial', serif; font-=
size: 18px; color:#666666;">Amount: $3.28</span></td></tr></table=
></td></tr><tr><td colspan=3D"2" width=3D"360" height=3D"1" bgcol=
or=3D"#D7D7D7" align=3D"left" valign=3D"top" style=3D"margin-bot=
tom: 0px; margin-top: 0px;"></td></tr><tr><td colspan=3D"2" width=
=3D"350" height=3D"-5" align=3D"left" valign=3D"top" style=3D"ma=
rgin-bottom: 0px; margin-top: 0px; padding-top:5.00px; padding-bo=
ttom:5.00px; padding-left:5.00px; padding-right:5.00px;"></td></t=
r><tr><td width=3D"165" align=3D"left" valign=3D"top" style=3D"m=
argin-bottom: 0px; margin-top: 0px; padding-top:10.00px; padding-=
bottom:10.00px; padding-right:15.00px;"><table cellpadding=3D"0" =
cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: colla=
pse;"><tr><td class=3D"ActionSummaryV2-Label" style=3D"margin-to=
p: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><span c=
lass=3D"TS-ActionSummaryV2-Label" style=3D"font-family: 'Arial',=
serif; font-size: 13px; color:#666666;">Card Ending In</span></t=
d></tr></table></td><td width=3D"180" bgcolor=3D"#EEEEEE" align=3D=
"left" valign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0p=
x; padding-top:10.00px; padding-bottom:10.00px;"><table cellpaddi=
ng=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collap=
se: collapse;"><tr><td class=3D"ActionSummaryV2-Value" style=3D"=
margin-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;=
"><span class=3D"TS-ActionSummaryV2-Value" style=3D"font-family:=
'Arial', serif; font-size: 13px; color:#333333;">1234</span></td=
></tr></table></td></tr><tr><td width=3D"165" align=3D"left" val=
ign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; padding=
-top:10.00px; padding-bottom:10.00px; padding-right:15.00px;"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"=
border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Labe=
l" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line-=
height: 19px;"><span class=3D"TS-ActionSummaryV2-Label" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#666666;">Me=
rchant</span></td></tr></table></td><td width=3D"180" bgcolor=3D"=
#EEEEEE" align=3D"left" valign=3D"top" style=3D"margin-bottom: 0=
px; margin-top: 0px; padding-top:10.00px; padding-bottom:10.00px;=
"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" styl=
e=3D"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2=
-Value" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; =
line-height: 19px;"><span class=3D"TS-ActionSummaryV2-Value" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;">STOP &amp; SHOP </span></td></tr></table></t=
d></tr><tr><td width=3D"165" align=3D"left" valign=3D"top" style=
=3D"margin-bottom: 0px; margin-top: 0px; padding-top:10.00px; pad=
ding-bottom:10.00px; padding-right:15.00px;"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td class=3D"ActionSummaryV2-Label" style=3D"margi=
n-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><sp=
an class=3D"TS-ActionSummaryV2-Label" style=3D"font-family: 'Ari=
al', serif; font-size: 13px; color:#666666;">Date</span></td></tr=
></table></td><td width=3D"180" bgcolor=3D"#EEEEEE" align=3D"lef=
t" valign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; p=
adding-top:10.00px; padding-bottom:10.00px;"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td class=3D"ActionSummaryV2-Value" style=3D"margi=
n-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><sp=
an class=3D"TS-ActionSummaryV2-Value" style=3D"font-family: 'Ari=
al', serif; font-size: 13px; color:#333333;">09/13/2022</span></t=
d></tr></table></td></tr><tr><td width=3D"165" align=3D"left" va=
lign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; paddin=
g-top:10.00px; padding-bottom:10.00px; padding-right:15.00px;"><t=
able cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D=
"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Lab=
el" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line=
-height: 19px;"><span class=3D"TS-ActionSummaryV2-Label" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#666666;">Ti=
me</span></td></tr></table></td><td width=3D"180" bgcolor=3D"#EEE=
EEE" align=3D"left" valign=3D"top" style=3D"margin-bottom: 0px; =
margin-top: 0px; padding-top:10.00px; padding-bottom:10.00px;"><t=
able cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D=
"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Val=
ue" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line=
-height: 19px;"><span class=3D"TS-ActionSummaryV2-Value" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">06=
:21 PM ET</span></td></tr></table></td></tr><tr><td colspan=3D"2"=
width=3D"350" height=3D"-5" align=3D"left" valign=3D"top" style=
=3D"margin-bottom: 0px; margin-top: 0px; padding-top:5.00px; padd=
ing-bottom:5.00px; padding-left:5.00px; padding-right:5.00px;"></=
td></tr></table></td></tr></table></td></tr><tr><td bgcolor=3D"#F=
FFFFF" valign=3D"middle" align=3D"center"><table cellpadding=3D"0=
" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlueHack Mobi=
leWidth Body2" style=3D"border-collapse: collapse;"><tr><td alig=
n=3D"left" valign=3D"top" style=3D"padding-left: 30px; padding-R=
ight: 30px;"><table id=3D"ex-table35" cellpadding=3D"0" cellspaci=
ng=3D"0" width=3D"360" style=3D"border-collapse: collapse;"><tr>=
<td width=3D"360" height=3D"15" align=3D"left" valign=3D"top" st=
yle=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr><tr><td wi=
dth=3D"360" bgcolor=3D"#EEEEEE" align=3D"left" valign=3D"top" st=
yle=3D"margin-bottom: 0px; margin-top: 0px; padding-top:0.00px; p=
adding-bottom:15.00px;"><table cellpadding=3D"0" cellspacing=3D"0=
" width=3D"100%" style=3D"border-collapse: collapse;"><tr><td cl=
ass=3D"Body-Text" style=3D"margin-top: 0; margin-bottom: 0; font=
-size: 0; line-height: 20px;"><span class=3D"TS-Body-Text" style=
=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333;"=
>To </span><span style=3D"font-family: 'Arial', serif; font-size=
: 13px; color:#333333;"><a href=3D"https://fm.info6.citi.com/ats/=
url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%3A%2F%2Fo=
nline.citi.com%2FUS%2FJRS%2Finfrastructure%2Fnewretarget.do%3Fnex=
t_page%3Djfp%7Cdashboard%26app_store%3DY%26enid%3DB50D2AC82C1732C=
F446BAF522FB4F4DC4E64&amp;linkName=3DCitiMobileAppDashbrd&amp;tra=
nsId=3DE2022091386272791" title=3D"view transactions" target=3D"_=
blank"><span class=3D"TS-Body-Text" style=3D"font-family: 'Arial=
', serif; font-size: 13px; text-decoration: underline; color:#007=
6C0;">view transactions</span></a></span><span class=3D"TS-Body-T=
ext" style=3D"font-family: 'Arial', serif; font-size: 13px; colo=
r:#333333;">=C2=A0on your account or </span><span style=3D"font-=
family: 'Arial', serif; font-size: 13px; color:#333333;"><a href=3D=
"https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;w=
e=3D1&amp;url=3Dhttps%3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finfras=
tructure%2Fnewretarget.do%3Fnext_page%3Djfp%7COmniChannelAlertsDe=
epDrop%26app_store%3DY%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4=
E64&amp;linkName=3DCT_CitiAlerts&amp;transId=3DE2022091386272791"=
title=3D"modify your custom alerts" target=3D"_blank"><span clas=
s=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; font-si=
ze: 13px; text-decoration: underline; color:#0076C0;">modify your=
custom alerts</span></a></span><span class=3D"TS-Body-Text" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;">, simply visit the </span><span class=3D"TS-Body-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">Ci=
ti Mobile</span><span class=3D"TS-Body-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 13px; color:#333333;"><sup>=C2=AE</=
sup></span><span class=3D"TS-Body-Text" style=3D"font-family: 'A=
rial', serif; font-size: 13px; color:#333333;">=C2=A0App</span><s=
pan class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif;=
font-size: 13px; color:#333333;">=C2=A0or </span><span class=3D"=
TS-Body-Text" style=3D"font-family: 'Arial', serif; font-size: 1=
3px; color:#333333;">Citi</span><span class=3D"TS-Body-Text" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;"><sup>=C2=AE</sup></span><span class=3D"TS-Body-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">=C2=
=A0Online</span><span class=3D"TS-Body-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 13px; color:#333333;">.</span></td>=
</tr></table></td></tr></table></td></tr></table></td></tr><tr><t=
d bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table c=
ellpadding=3D"0" cellspacing=3D"0" class=3D"MobileWidth SignoffAl=
l" style=3D"border-collapse: collapse;"><tr><td align=3D"left" v=
align=3D"top"><table id=3D"ex-textbox73" cellpadding=3D"0" cellsp=
acing=3D"0" width=3D"420" bgcolor=3D"#008FC9" style=3D"line-heig=
ht: normal; border-collapse: separate;"><tr><td width=3D"418" hei=
ght=3D"5" valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td style=3D"margin-top: 0; margin-bottom: 0; font=
-size: 0; text-align: center; line-height: 7px;"></td></tr></tabl=
e></td></tr></table></td></tr><tr><td align=3D"left" valign=3D"to=
p"><table id=3D"ex-textbox74" cellpadding=3D"0" cellspacing=3D"0"=
width=3D"420" class=3D"Signoff" bgcolor=3D"#CCCCCC" style=3D"li=
ne-height: normal; border-collapse: separate; padding-left: 40px;=
padding-right: 40px; padding-bottom: 40px; padding-top: 32px;"><=
tr><td width=3D"338" valign=3D"top" align=3D"left"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td class=3D"Signoff-Text" style=3D"margin-=
top: 0; margin-bottom: 0; font-size: 0; padding-bottom: 30px; lin=
e-height: 20px;"><span class=3D"Signoff TS-Signoff-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">Ci=
ti is at your side before, during and after every purchase.</span=
></td></tr><tr><td class=3D"Signoff-Signature" style=3D"margin-t=
op: 0; margin-bottom: 0; font-size: 0; text-align: right; line-he=
ight: 1;"><span class=3D"Signoff TS-Signoff-Signature" style=3D=
"font-family: 'Arial', serif; font-size: 18px; color:#333333;">Yo=
ur Citi Team</span></td></tr></table></td></tr></table></td></tr>=
<tr><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox75" =
cellpadding=3D"0" cellspacing=3D"0" width=3D"420" style=3D"line-=
height: normal; border-collapse: separate;"><tr><td width=3D"418"=
height=3D"15" valign=3D"top" align=3D"left"></td></tr></table></=
td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"m=
iddle" align=3D"center"><table cellpadding=3D"0" cellspacing=3D"0=
" class=3D"JordanHack SamGrayHack MobileWidth EX_RESPONSIVE_TABLE=
_480 AccountLinks" style=3D"border-collapse: collapse;"><tr><td =
align=3D"left" valign=3D"top" style=3D"padding-bottom: 15px; pad=
ding-top: 15px;"><table id=3D"ex-table36" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"130" style=3D"border-collapse: collapse;">=
<tr><td width=3D"130" height=3D"20" align=3D"center" valign=3D"m=
iddle" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cell=
padding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-c=
ollapse: collapse;"><tr><td class=3D"ContactUs-Text" style=3D"ma=
rgin-top: 0; margin-bottom: 0; font-size: 0; text-align: center; =
line-height: 20px;"><span style=3D"font-family: 'Arial', serif; =
font-size: 13px; color:#666666;"><a href=3D"https://fm.info6.citi=
.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%=
3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finfrastructure%2Fnewretarget=
.do%3Fnext_page%3Djfp%7Cdashboard%26app_store%3DN%26enid%3DB50D2A=
C82C1732CF446BAF522FB4F4DC4E64&amp;linkName=3DCN_ViewYourAcct&amp=
;transId=3DE2022091386272791" title=3D"View Your Account" target=3D=
"_blank"><span class=3D"TS-ContactUs-Text" style=3D"font-family:=
'Arial', serif; font-size: 13px; text-decoration: underline; col=
or:#666666;">View Your Account</span></a></span></td></tr></table=
></td></tr></table></td><td align=3D"left" valign=3D"top" style=3D=
"padding-bottom: 15px; padding-top: 15px;"><table id=3D"ex-table3=
7" cellpadding=3D"0" cellspacing=3D"0" width=3D"180" style=3D"bo=
rder-collapse: collapse;"><tr><td width=3D"180" height=3D"20" al=
ign=3D"center" valign=3D"middle" style=3D"margin-bottom: 0px; mar=
gin-top: 0px; border-left: #D7D7D7 1px solid; border-right: #D7D7=
D7 1px solid;"><table cellpadding=3D"0" cellspacing=3D"0" width=3D=
"100%" style=3D"border-collapse: collapse;"><tr><td class=3D"Con=
tactUs-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size=
: 0; text-align: center; line-height: 20px;"><span style=3D"font=
-family: 'Arial', serif; font-size: 13px; color:#666666;"><a href=
=3D"https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&am=
p;we=3D1&amp;url=3Dhttps%3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finf=
rastructure%2Fnewretarget.do%3Fnext_page%3Djfp%7Cjcbol_pnt_crecar=
pay_EOT%26app_store%3DN%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC=
4E64&amp;linkName=3DCN_PAY_ONLINE_URL&amp;transId=3DE202209138627=
2791" title=3D"Pay Your Bill" target=3D"_blank"><span class=3D"TS=
-ContactUs-Text" style=3D"font-family: 'Arial', serif; font-size=
: 13px; text-decoration: underline; color:#666666;">Pay Your Bill=
</span></a></span></td></tr></table></td></tr></table></td><td al=
ign=3D"left" valign=3D"top" style=3D"padding-bottom: 15px; paddi=
ng-top: 15px;"><table id=3D"ex-table38" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"110" style=3D"border-collapse: collapse;"><t=
r><td width=3D"111" height=3D"20" align=3D"center" valign=3D"mid=
dle" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cellpa=
dding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-col=
lapse: collapse;"><tr><td class=3D"ContactUs-Text" style=3D"marg=
in-top: 0; margin-bottom: 0; font-size: 0; text-align: center; li=
ne-height: 20px;"><span style=3D"font-family: 'Arial', serif; fo=
nt-size: 13px; color:#666666;"><a href=3D"https://fm.info6.citi.c=
om/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%3A=
%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fportal%2Fcontactus.do%3FID=
%3DContactUsCards%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&a=
mp;linkName=3DCN_CONTACT_US_URL&amp;transId=3DE2022091386272791" =
title=3D"Contact Us" target=3D"_blank"><span class=3D"TS-ContactU=
s-Text" style=3D"font-family: 'Arial', serif; font-size: 13px; t=
ext-decoration: underline; color:#666666;">Contact Us</span></a><=
/span></td></tr></table></td></tr></table></td></tr></table></td>=
</tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"cente=
r"><table cellpadding=3D"0" cellspacing=3D"0" class=3D"PLTModule"=
style=3D"border-collapse: collapse;"><tr><td align=3D"left" val=
ign=3D"top" style=3D"padding-top: 15px;"><table cellpadding=3D"0=
" cellspacing=3D"0" style=3D"border-collapse: collapse;"><tr><td=
class=3D"HideDesktopPLT" height=3D"110"><img id=3D"ex-image18" s=
rc=3D"https://snamwpm.eccmp.com/wpm/617/ContentUploads/misc/Feb20=
_PLT_Desktop.png" alt=3D"Citi, Welcome what's next" style=3D"dis=
play: block;"/></td></tr></table></td><td align=3D"left" valign=3D=
"top" style=3D"padding-top: 15px;"><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse: collapse;"><tr><td class=
=3D"ShowMobilePLT" style=3D"overflow: hidden; float: center; disp=
lay: none; padding-top:15.00px; padding-bottom:0.00px;" height=3D=
"110"><img id=3D"ex-image19" src=3D"https://snamwpm.eccmp.com/wpm=
/617/ContentUploads/misc/Feb20_PLT_Mobile.png" alt=3D"Citi, Welco=
me what's next" /></td></tr></table></td></tr></table></td></tr><=
tr><td bgcolor=3D"#EEEEEE" valign=3D"middle" align=3D"center"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=
=3D"MobileWidth" style=3D"border-collapse: collapse;"><tr><td al=
ign=3D"left" valign=3D"top" style=3D"padding-left: 15px; padding=
-Right: 15px;"><table id=3D"ex-textbox76" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"620" bgcolor=3D"#EEEEEE" style=3D"line-hei=
ght: normal; border-collapse: separate;"><tr><td width=3D"618" he=
ight=3D"16" valign=3D"top" align=3D"left"></td></tr></table></td>=
</tr><tr><td align=3D"left" valign=3D"top" style=3D"padding-left=
: 15px; padding-Right: 15px;"><table id=3D"ex-textbox77" cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"620" style=3D"line-height: =
normal; border-collapse: separate; padding-bottom: 3px;"><tr><td =
width=3D"618" valign=3D"top" align=3D"left"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td role=3D'heading' aria-level=3D'2' class=3D"Emai=
lApps-Intro" style=3D"margin-top: 0; margin-bottom: 0; font-size=
: 0; line-height: 13px;"><span class=3D"TS-EmailApps-Text" style=
=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;"=
>Download the </span><span class=3D"TS-EmailApps-Text" style=3D"=
font-family: 'Arial', serif; font-size: 10px; color:#666666;">Cit=
i Mobile</span><span class=3D"TS-EmailApps-Text" style=3D"font-f=
amily: 'Arial', serif; font-size: 10px; color:#666666;"><sup>=C2=AE=
</sup></span><span class=3D"TS-EmailApps-Text" style=3D"font-fam=
ily: 'Arial', serif; font-size: 10px; color:#666666;">=C2=A0App</=
span></td></tr></table></td></tr></table></td></tr><tr><td align=3D=
"left" valign=3D"top" style=3D"padding-left: 15px; padding-Right=
: 15px;"><table cellpadding=3D"0" cellspacing=3D"0" class=3D"EX_R=
ESPONSIVE_TABLE_480 AppStore" style=3D"border-collapse: collapse=
;"><tr><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox7=
8" cellpadding=3D"0" cellspacing=3D"0" width=3D"135" style=3D"li=
ne-height: normal; border-collapse: separate;"><tr><td width=3D"1=
33" height=3D"40" valign=3D"middle" align=3D"left"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td style=3D"margin-top: 0; margin-bottom: =
0; font-size: 0;"><span style=3D"font-family: 'Arial', serif; fo=
nt-size: 15px; line-height: 17px; color:#000000;"><a href=3D"http=
s://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1=
&amp;url=3Dhttps%3A%2F%2Fitunes.apple.com%2Fapp%2Fciti-mobile-sm%=
2Fid301724680%3Fmt%3D8%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4=
E64&amp;linkName=3DCN_APPSTORE&amp;transId=3DE2022091386272791" t=
itle=3D"Download the Citi Mobile App from the App Store" target=3D=
"_blank"><img src=3D"https://snamwpm.eccmp.com/wpm/617/ContentUpl=
oads/misc/Feb20_AppStore_transp.png" alt=3D""/></a></span></td></=
tr></table></td></tr></table></td><td width=3D"13"></td><td align=
=3D"left" valign=3D"top"><table id=3D"ex-textbox79" cellpadding=3D=
"0" cellspacing=3D"0" width=3D"134" style=3D"line-height: normal=
; border-collapse: separate;"><tr><td width=3D"132" height=3D"40"=
valign=3D"middle" align=3D"left"><table cellpadding=3D"0" cellsp=
acing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;">=
<tr><td style=3D"margin-top: 0; margin-bottom: 0; font-size: 0;"=
><span style=3D"font-family: 'Arial', serif; font-size: 15px; li=
ne-height: 17px; color:#000000;"><a href=3D"https://fm.info6.citi=
.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%=
3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.citi.=
citimobile%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&amp;link=
Name=3DCN_GOOGLEPLAY&amp;transId=3DE2022091386272791" title=3D"Do=
wnload the Citi Mobile App from Google Play" target=3D"_blank"><i=
mg src=3D"https://snamwpm.eccmp.com/wpm/617/ContentUploads/misc/F=
eb20_GooglePlay_transp.png" alt=3D""/></a></span></td></tr></tabl=
e></td></tr></table></td></tr></table></td></tr><tr><td align=3D"=
left" valign=3D"top" style=3D"padding-left: 15px; padding-Right:=
15px;"><table id=3D"ex-textbox80" cellpadding=3D"0" cellspacing=3D=
"0" width=3D"620" bgcolor=3D"#EEEEEE" style=3D"line-height: norm=
al; border-collapse: separate; padding-top: 7px;"><tr><td width=3D=
"618" valign=3D"top" align=3D"left"><table cellpadding=3D"0" cell=
spacing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;=
"><tr><td class=3D"EmailApps-Concl" style=3D"margin-top: 0; marg=
in-bottom: 0; font-size: 0; line-height: 12px;"><span class=3D"TS=
-EmailApps-Text" style=3D"font-family: 'Arial', serif; font-size=
: 10px; color:#666666;">Apple and the Apple logo are trademarks o=
f Apple Inc. Registered in the U.S. and other countries. App Stor=
e is a service mark of Apple Inc., registered in the U.S. and oth=
er countries. Android, Google Play, and the Google Play logo are =
trademarks of Google LLC.<br /><br /></span></td></tr><tr><td cla=
ss=3D"EmailApps-Concl" style=3D"margin-top: 0; margin-bottom: 0;=
font-size: 0; line-height: 12px;"><span class=3D"TS-EmailApps-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 10px; color=
:#666666;">Citibank</span><span class=3D"TS-EmailApps-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;=
"><sup>=C2=AE</sup></span><span class=3D"TS-EmailApps-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;=
"> is not responsible for products and services offered by other =
companies.<br /><br /></span></td></tr></table></td></tr></table>=
</td></tr></table></td></tr><tr><td valign=3D"middle" align=3D"ce=
nter"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEE=
EE" class=3D"MobileWidth" style=3D"border-collapse: collapse;"><=
tr><td align=3D"left" valign=3D"top" style=3D"padding-left: 15px=
; padding-right: 15px; ;"><table cellpadding=3D"0" cellspacing=3D=
"0" bgcolor=3D"#EEEEEE" style=3D"border-collapse: collapse;"><tr=
><td align=3D"left" valign=3D"top"><table cellpadding=3D"0" cells=
pacing=3D"0" bgcolor=3D"#EEEEEE" style=3D"border-collapse: colla=
pse;"><tr><td align=3D"left" valign=3D"top"></td><td align=3D"lef=
t" valign=3D"top"></td></tr></table></td></tr><tr><td align=3D"le=
ft" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" bgc=
olor=3D"#EEEEEE" class=3D"FooterLogo JordanHack SamGrayHack EX_RE=
SPONSIVE_TABLE_480" style=3D"border-collapse: collapse;"><tr><td=
align=3D"left" valign=3D"top"></td><td align=3D"left" valign=3D"=
top"></td><td align=3D"left" valign=3D"top"></td></tr></table></t=
d></tr></table></td></tr></table></td></tr><tr><td bgcolor=3D"#EE=
EEEE" valign=3D"middle" align=3D"center"><table cellpadding=3D"0"=
cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"MobileWidth" sty=
le=3D"border-collapse: collapse;"><tr><td align=3D"left" valign=3D=
"top" style=3D"padding-left: 15px; padding-right: 15px; ;"><tabl=
e cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" style=3D=
"border-collapse: collapse;"><tr><td align=3D"left" valign=3D"top=
"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" =
class=3D"FooterLogo JordanHack SamGrayHack EX_RESPONSIVE_TABLE_48=
0" style=3D"border-collapse: collapse;"><tr><td align=3D"left" v=
align=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" style=3D=
"border-collapse: collapse;"><tr><td width=3D"485" height=3D"32">=
<img id=3D"ex-image20" src=3D"https://snamwpm.eccmp.com/wpm/617/C=
ontentUploads/logos/Jun20_Citi_RGB_BWFooterLogo.png" alt=3D"Citi"=
style=3D"display: block;"/></td></tr></table></td><td align=3D"=
left" valign=3D"top"><table id=3D"ex-textbox81" cellpadding=3D"0"=
cellspacing=3D"0" width=3D"75" style=3D"line-height: normal; bo=
rder-collapse: separate;"><tr><td width=3D"73" height=3D"32" vali=
gn=3D"bottom" align=3D"left"><table cellpadding=3D"0" cellspacing=
=3D"0" width=3D"100%" style=3D"border-collapse: collapse;"><tr><=
td class=3D"Privacy-Button1" style=3D"margin-top: 0; margin-bott=
om: 0; font-size: 0;"><span style=3D"font-family: 'Arial', serif=
; font-size: 12px; line-height: 14px; color:#666666;"><a href=3D"=
https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=
=3D1&amp;url=3Dhttps%3A%2F%2Fwww.citibank.com%2Fus%2Fcards%2Fpriv=
acy.htm%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&amp;linkNam=
e=3DCN_PRIVACY_URL&amp;transId=3DE2022091386272791" title=3D"Priv=
acy" target=3D"_blank"><span class=3D"TS-Privacy-Button" style=3D=
"font-family: 'Arial', serif; font-size: 12px; line-height: 14px;=
text-decoration: underline; color:#666666;">Privacy</span></a></=
span></td></tr></table></td></tr></table></td><td align=3D"left" =
valign=3D"top"><table id=3D"ex-textbox82" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"60" style=3D"line-height: normal; border-c=
ollapse: separate;"><tr><td width=3D"58" height=3D"32" valign=3D"=
bottom" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0"=
width=3D"100%" style=3D"border-collapse: collapse;"><tr><td cla=
ss=3D"Privacy-Button2" style=3D"margin-top: 0; margin-bottom: 0;=
font-size: 0;"><span style=3D"font-family: 'Arial', serif; font=
-size: 12px; line-height: 14px; color:#666666;"><a href=3D"https:=
//fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&a=
mp;url=3Dhttps%3A%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fpands%2Fd=
etail.do%3FID%3DEmailFraud%26enid%3DB50D2AC82C1732CF446BAF522FB4F=
4DC4E64&amp;linkName=3DCN_SECURITY_URL&amp;transId=3DE20220913862=
72791" title=3D"Security" target=3D"_blank"><span class=3D"TS-Pri=
vacy-Button" style=3D"font-family: 'Arial', serif; font-size: 12=
px; line-height: 14px; text-decoration: underline; color:#666666;=
">Security</span></a></span></td></tr></table></td></tr></table><=
/td></tr></table></td></tr><tr><td align=3D"left" valign=3D"top">=
<table id=3D"ex-table39" cellpadding=3D"0" cellspacing=3D"0" widt=
h=3D"620" class=3D"SamBlueHack" style=3D"border-collapse: collap=
se;"><tr><td colspan=3D"2" width=3D"620" align=3D"left" valign=3D=
"top" style=3D"margin-bottom: 0px; margin-top: 0px; padding-top:1=
5.00px; padding-bottom:0.00px;"><table cellpadding=3D"0" cellspac=
ing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;"><t=
r><td class=3D"Footnote-Text" style=3D"margin-top: 0; margin-bot=
tom: 0; font-size: 0; padding-bottom: 15px; line-height: 12px;"><=
img src=3D"https://accountonline.citi.com/cards/svc/img/logo/CI_S=
Z_icn_lock.gif" alt=3D""/><span class=3D"SamBlueHack" style=3D"=
font-family: 'Arial', serif; font-size: 9px; color:#000000;">The =
security zone at the top of this email helps you verify that it w=
as in fact sent by Citi.</span></td></tr><tr><td class=3D"Footnot=
e-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; =
padding-bottom: 15px; line-height: 12px;"><span class=3D"SamBlue=
Hack TS-Footnote-TextUnd" role=3D"heading" aria-level=3D"3" styl=
e=3D"font-family: 'Arial', serif; font-size: 9px; text-decoration=
: underline; color:#666666;">ABOUT THIS MESSAGE</span><span clas=
s=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Arial'=
, serif; font-size: 9px; color:#666666;"><br /></span><span clas=
s=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Arial'=
, serif; font-size: 9px; color:#666666;">This email is sent by Ci=
ti Cards to keep you informed about your Citi credit card, includ=
ing updates about your account activity and information about fea=
tures and services to help you effectively manage your account. H=
ave questions? Please do not reply to this service email. Instead=
, just </span><span class=3D"SamBlueHack" style=3D"font-family:=
'Arial', serif; font-size: 9px; color:#666666;"><a href=3D"https=
://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&=
amp;url=3Dhttps%3A%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fportal%2=
Fcontactus.do%3FID%3DContactUsCards%26enid%3DB50D2AC82C1732CF446B=
AF522FB4F4DC4E64&amp;linkName=3DCN_CONTACT_US_URL&amp;transId=3DE=
2022091386272791" title=3D"contact us" target=3D"_blank"><span c=
lass=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Ari=
al', serif; font-size: 9px; text-decoration: underline; color:#00=
76C0;">contact us</span></a></span><span class=3D"SamBlueHack TS=
-Footnote-Text" style=3D"font-family: 'Arial', serif; font-size:=
9px; color:#666666;">.</span></td></tr><tr><td class=3D"Footnote=
-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; p=
adding-bottom: 15px; line-height: 12px;"><span class=3D"SamBlueH=
ack TS-Footnote-Text" style=3D"font-family: 'Arial', serif; font=
-size: 9px; color:#666666;">Our mailing address: </span><span cl=
ass=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Aria=
l', serif; font-size: 9px; color:#666666;">Citibank Customer Serv=
ice P. O. Box 6500 Sioux Falls, SD 57117</span></td></tr></table>=
</td></tr></table></td></tr><tr><td align=3D"left" valign=3D"top"=
></td></tr><tr><td align=3D"left" valign=3D"top"></td></tr><tr><t=
d align=3D"left" valign=3D"top"><table id=3D"ex-table40" cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"618" style=3D"border-collap=
se: collapse;"><tr><td width=3D"618" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-colla=
pse: collapse;"><tr><td class=3D"Footnote-Text" style=3D"margin-=
top: 0; margin-bottom: 0; font-size: 0; padding-bottom: 15px; lin=
e-height: 12px;"><span style=3D"font-family: 'Arial', serif; fon=
t-size: 9px; color:#000000;"><sup>=C2=A9</sup></span><span class=3D=
"TS-Footnote-Text" style=3D"font-family: 'Arial', serif; font-si=
ze: 9px; color:#666666;">2022 Citibank, N.A. Citi, Citibank, Citi=
with Arc Design and Citi Mobile are registered service marks of =
Citigroup Inc.</span></td></tr></table></td></tr></table></td></t=
r></table></td></tr></table></td></tr><tr><td bgcolor=3D"#EEEEEE"=
valign=3D"middle" align=3D"center"><table cellpadding=3D"0" cell=
spacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"MobileWidth Auditline =
PUB47 7/24/2017" style=3D"border-collapse: collapse;"><tr><td al=
ign=3D"left" valign=3D"top" style=3D"padding-left: 15px; padding=
-right: 15px; padding-bottom: 30px; padding-top: 10px;"><div aria=
-hidden=3D"true"><table id=3D"ex-textbox83" cellpadding=3D"0" cel=
lspacing=3D"0" width=3D"620" style=3D"line-height: normal; borde=
r-collapse: separate;"><tr><td width=3D"618" valign=3D"top" align=
=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"100=
%" style=3D"border-collapse: collapse;"><tr><td aria-hidden=3D"t=
rue" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0;"><s=
pan style=3D"font-family: 'Arial', serif; font-size: 11px; line-=
height: 13px; color:#666666;">LBCA2012001 E2022091386272791 142</=
span></td></tr></table></td></tr></table></div></td></tr></table>=
</td></tr><tr><td bgcolor=3D"#EEEEEE" valign=3D"middle" align=3D"=
center"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EE=
EEEE" style=3D"border-collapse: collapse;"><tr><td align=3D"left=
" valign=3D"top" style=3D"padding-left: 15px; padding-right: 15p=
x; padding-bottom: 30px; padding-top: 10px;"></td></tr></table></=
td></tr></table></td></tr></table></td></tr></body></html>=0A=0A<=
html>=0A<body><img src=3D"https://l.info6.citi.com/rts/open.aspx?=
tp=3Dk-F7hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1n=
I-A7nnrDubnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ" he=
ight=3D"1" width=3D"1" style=3D"display:none"></body>=0A</html>
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8--

831
src/parse/testdata/citi/wrong_sender.eml vendored Normal file
View File

@ -0,0 +1,831 @@
Delivered-To: me@cardholder.com
Received: by 2002:a59:c04d:0:b0:2de:4d02:b586 with SMTP id d13csp4830283vqp;
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
X-Google-Smtp-Source: AA6agR6jEjc9qbM4L0hYWK3BgZ2pe3veLD7DfjkGZs8W4rupSzPLjTuPvBQAHzThP3r01mvri1RT
X-Received: by 2002:a17:907:31c1:b0:742:28a3:5d08 with SMTP id xf1-20020a17090731c100b0074228a35d08mr23116063ejb.112.1663107714138;
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1663107714; cv=none;
d=google.com; s=arc-20160816;
b=WCM4TeIZU5vIeBaFaSCoQltBNWfJZdNdZLRH/zMyskv8D4xR8q8yqrOFVfvFHG5p0F
unk+VtgceEju4N7qjQVnqDXHZtG+iQ4M0moTzp9ihgsEpmaRzzkFOVhU4DvBucJ83Aln
bYLSMzAN4qdAnLkybIU4dvYWzLa+Tclochpwpep81nDNyCYd875Z2yagPqlSd2jBJrCT
Msyke5THXwTp3hLc3aUxBdySAc9aAhoXficBvRfl/M6+SarA5RHrdUJIV12q7yFFZcql
G6QOKNXiLOdv5qFQUNBybcnOEGC/asZFKcb3Tm9FZsyl8gWdl+AiS7EStBAZBSf+MxvD
rKyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=subject:date:to:from:mime-version:list-unsubscribe:errors-to
:dkim-signature:message-id;
bh=oHEH67FpkKXo2UbMQBFHsqapCa7fWy0UfBgNWmbFqOU=;
b=r/BdpqHHOLuCm29tdv6eo76Wrm32VkraFzykOGst+ReyFbynVPhwcObBufembEQZZG
QYIxmD7MmJlDgiwt/fqenIj5Y+sy+VuJx/7SrC274g5kClRlEouM5Bq+lJNNHO370m/t
8PwJV/40z69rizNlhXm6S6CDruN1JxPH8/N9h1LNKigK8sEUTAQodb4J9eVbsDpC24p2
qe8DdHP21yyOEYzkZa/sxxxeZ4hTm5ONlKcLMbyDJ0cpfDZ2ik4A4/KPZj4fTitj3D9R
zX87QJaAYrPb0WfjUEynxSeBrYuNFcLrebnSpAah9jjvOco0fOb/Xj5PwRKrV5DaZT/i
Z5qg==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@info6.citi.com header.s=0 header.b=qrC5KBBn;
spf=pass (google.com: domain of scammer@fakebank.com designates 63.239.204.147 as permitted sender) smtp.mailfrom=scammer@fakebank.com;
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=citi.com
Return-Path: <scammer@fakebank.com>
Received: from p1-204147.info6.citi.com (p1-204147.info6.citi.com. [63.239.204.147])
by mx.google.com with ESMTPS id dn3-20020a17090794c300b0077be1301563si5692673ejc.196.2022.09.13.15.21.53
for <me@cardholder.com>
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Tue, 13 Sep 2022 15:21:54 -0700 (PDT)
Received-SPF: pass (google.com: domain of scammer@fakebank.com designates 63.239.204.147 as permitted sender) client-ip=63.239.204.147;
Authentication-Results: mx.google.com;
dkim=pass header.i=@info6.citi.com header.s=0 header.b=qrC5KBBn;
spf=pass (google.com: domain of scammer@fakebank.com designates 63.239.204.147 as permitted sender) smtp.mailfrom=scammer@fakebank.com;
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=citi.com
Message-ID: <63210282.170a0220.3aa58.f2a9SMTPIN_ADDED_BROKEN@mx.google.com>
X-Google-Original-Message-ID: <617.aet:8b399a5f-6f58-4dbe-ba97-560368d83ca0.202209132221519529824.0003043630@info6.citi.com>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=0; d=info6.citi.com;
h=Message-ID:List-Unsubscribe:MIME-Version:From:To:Date:Subject:Content-Type;
i=scammer@fakebank.com;
bh=oHEH67FpkKXo2UbMQBFHsqapCa7fWy0UfBgNWmbFqOU=;
b=qrC5KBBn/xY6T5jfbePrbW9D5vRY5qDOJSfDbOV9FpVrK5IZXz3Fp53G2Ira0XHV34RExG8qawZW
NPysUydzcQSn888LTZJo0Nn83pBuF1dXpVgBQh3Z+KR+tI7gv92adLsJ7Z2fgZp3Tym9zW2ogBJF
9cTXSljBNgmot4Jh0KU=
Received: from NY5PAET01 (10.24.71.38) by p1-204147.info6.citi.com id h441802o8is4 for <me@cardholder.com>; Tue, 13 Sep 2022 18:21:52 -0400 (envelope-from <scammer@fakebank.com>)
Errors-to: scammer@fakebank.com
Return-Path: scammer@fakebank.com<rp-f-C1l2zcsd1q-JoTBtm3Yuly-63lJyNgJ25T-Kj5vwNkx2TA@info6.citi.com>
List-Unsubscribe: <mailto:unsub-f-C1l2zcsd1q-JoTBtm3Yuly-63lJyNgJ25T-Kj5vwNkx2TA@info6.citi.com?subject=Unsubscribe>
X-Mailer: XyzMailer
X-Xyz-cr: 617
X-Xyz-cn: 819
X-Xyz-bcn: 818
X-Xyz-md: 100
X-Xyz-mg: aet:8b399a5f-6f58-4dbe-ba97-560368d83ca0
X-Xyz-et: 114
X-Xyz-pk: 8b399a5f-6f58-4dbe-ba97-560368d83ca0
X-Xyz-ct: 1352
X-Xyz-bct: 1351
X-Xyz-type: aet
X-Xyz-inst: true
MIME-Version: 1.0
From: "Citi Alerts" <scammer@fakebank.com>
To: "SOMEONE " <me@cardholder.com>
Date: 13 Sep 2022 22:21:51 +0000
Subject: =?utf-8?B?QSAkMy4yOCB0cmFuc2FjdGlvbiB3YXMgbWFkZSBvbiB5b3VyIENpdGnCriBEb3VibGUgQ2FzaCBhY2NvdW50?=
Content-Type: multipart/alternative;
boundary=--boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Citi(R) =0A=0AAdd scammer@fakebank.com to your address book to e=
nsure delivery.=0A=0A=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=0ASOMEONE =0A=0APlease visit the following link to=
view your message:=0Ahttp://fm.info6.citi.com/ats/msg.aspx?sg1=3D=
8b7a87b9657567cae4df4067fec14be6d52cf918107704a5b3d790cb93a9639a=0A=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A=0A=
Privacy=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D133&tp=3Dk-F7=
hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7nnrDu=
bnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0ASecurit=
y=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D134&tp=3Dk-F7hweSyf=
xHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7nnrDubnYX-F=
rDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0AThis email is=
to keep you informed about your Citibank credit card, including =
service updates and other information about your account. Have qu=
estions? Please do not reply to this service email. Instead, just=
Contact Us=0Ahttps://l.info6.citi.com/rts/go2.aspx?t=3D135&tp=3D=
k-F7hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1nI-A7n=
nrDubnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ=0A=0ACit=
ibank Customer Service P. O. Box 6500 Sioux Falls, SD 57117=0A=0A=
=C2=A92022 Citibank, N.A. =0A
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h=
ttp://www.w3.org/TR/html4/loose.dtd"><html lang=3D"en-US"><head><=
title>A $3.28 transaction was made on your Citi=C2=AE Double Cash=
account</title><!-- OpenText Exstream Version 16.4.6 64-bit--><!=
-- CreationDate: 9/13/2022 17:21:46 --><!-- For: Registered to CI=
TIAIX --><style type=3D"text/css">/* MP - Overhaul top.css */.Mo=
bileWidth {width: 420px;}/*Logo + security zone*/.ValignBottom td=
{ vertical-align: bottom;}.SecurityZoneTop > tbody > tr > td:nt=
h-child(2) { width: 51px; vertical-align: middle;}.SecurityZoneT=
op > tbody > tr > td:empty { width: 0; display: none;}.Head=
line { border-radius: 5px 5px 0 0;}.StatementSnap > tbody > tr >=
td > table > tbody > tr:last-child > td { border-bottom: 0!impo=
rtant;}.CTAButton a,.Education a,.BinaryCTA a { display: table-c=
ell; vertical-align: middle; width: 170px;}.SecondaryCTA > tbod=
y > tr > td > table > tbody > tr:nth-child(3) > td > table > tbod=
y > tr > td,.SecondaryCTA > tbody > tr > td > table > tbody > tr:=
nth-child(4) > td > table > tbody > tr > td { line-height: norma=
l!important;}.SecondaryCTA img { vertical-align: top;}.Signoff {=
border-radius: 0 0 5px 5px;}sup, sub { vertical-align: baselin=
e; position: relative; top: -0.4em;}sub { top: 0.4em; }/*Link=
s*/.SamBlueHack a,.SamBlueHack a span { color:#005AA1 !important=
;}.SamGrayHack a,.SamGrayHack a span { color: #666666 !important=
;}.SamWhiteHack a,.SamWhiteHack a span { color: #FFFFFF !importa=
nt;}.SMSButton a,.SMSButton a span { border: none; padding:=
4.75px; text-align: center; text-decoration: none !importa=
nt; display: inline-block; cursor: pointer; color: #FFFF=
FF !important;}@media (max-width: 480px) { .MobileWidth {width: =
320px;} td[class=3D"ShowMobile"] { overflow: visible !importa=
nt; float: none !important; display: table-cell !important;=
line-height:100% !important; } td[class=3D"ShowMobilePLT"] =
{ overflow: visible !important; float: none !important; =
display: table-cell !important; line-height:100% !important; =
} td[class=3D"HideDesktopPLT"] { overflow: visible !important=
; float: none !important; display: none !important; line=
-height:100% !important; } /*Logo header*/ .LogoHeader > tbody=
> tr > td:first-child > table > tbody > tr > td { padding-bot=
tom: 10px !important; } .LogoHeader > tbody > tr > td:last-chil=
d > table > tbody > tr > td { padding-top: 0 !important; } =
/*Statment snapshot*/ .StatementSnap > tbody > tr > td > table >=
tbody > tr > td { display: block; width: 100% !important; =
} .StatementSnap > tbody > tr > td > table > tbody > tr:nth-chi=
ld(3) > td:first-child { border-bottom: 0!important; } .Stat=
ementSnap > tbody > tr > td > table > tbody > tr:nth-child(n+3) >=
td:last-child { padding-top: 0!important; height: auto!imp=
ortant; border-top: 0!important; } .StatementSnap > tbody > =
tr > td > table > tbody > tr:nth-child(n+3) > td:first-child { =
padding-bottom: 0!important; height: auto!important; borde=
r-bottom: 0!important; } /*List of steps*/ .ListOfSteps td:nth=
-child(2) { padding-left: 20px; } /*Action summary v3*/ .Ac=
tionSum3 img { width: 10px !important; margin-bottom: 44px;=
} /*CTA*/ .CTAButton > tbody > tr:first-child > td { paddi=
ng: 15px 0 0 0 !important; } .CTAButton > tbody > tr:first-chil=
d > td > table > tbody > tr > td { padding-right: 30px!importa=
nt; } /*Account links*/ .AccountLinks > tbody > tr > td > tabl=
e { width: 100%!important; } .AccountLinks table table td { =
text-align: left !important; } .AccountLinks > tbody > tr > =
td > table > tbody > tr > td { border-left: 0 !important; b=
order-right: 0 !important; } .AccountLinks > tbody > tr > td { =
border-bottom: #D7D7D7 1px solid; } .AccountLinks > tbody > =
tr > td:last-child { border-bottom: 0 !important; } .Account=
Links img { width: 8px!important; height: 15px!important; =
} .AccountLinks > tbody > tr > td > table > tbody > tr > td:nth-=
child(2) { width: 8px!important; } .AccountLinks > tbody > t=
r > td:nth-child(2) { padding-top: 15px !important; } .Accou=
ntLinks > tbody > tr > td:nth-child(3) { padding-top: 15px !im=
portant; } .AppStore > tbody > tr > td:nth-child(2) { height=
: 7px; } .RewardCertificate td > div { max-width: 260px; =
overflow: visible; } .RewardCertificate div > img { max-wi=
dth: 369px!important; min-width: 369px!important; width: 36=
9px; margin-left: -54px; } .CTAButton a, .Education a { =
width: 260px; } .BinaryCTA a { width: 120px; }}</style><m=
eta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Du=
tf-8"/><style>@media (max-width: 480px){table {width:100%;}img {m=
ax-width:100%; height: auto !important;}table.EX_RESPONSIVE_TABLE=
_480 {display:block;}table.EX_RESPONSIVE_TABLE_480 > tbody {displ=
ay:block;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr {display:blo=
ck;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr > th {display:bloc=
k;}table.EX_RESPONSIVE_TABLE_480 > tbody > tr > td {display:block=
;}table.EX_RESPONSIVE_TABLE_480 table {table-layout: auto !import=
ant;}.EX_RESPONSIVE_HIDE_CELL_480 {display:none !important;}}</st=
yle></head><body><table width=3D"100%" cellpadding=3D"0" cellspac=
ing=3D"0"><tr><td align=3D"center"></table><table cellpadding=3D"=
0" cellspacing=3D"0" width=3D"651" class=3D"MainTable EX_RESPONSI=
VE_TABLE_480" data-experian-nop=3D"EXPERIAN_NOP^ EX_RESPONSIVE_TA=
BLE_480" role=3D"presentation" bgcolor=3D"#EEEEEE" style=3D"bord=
er-collapse: collapse; table-layout: fixed; width: 100%;"><tr><t=
d class=3D"EX_RESPONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0=
"></td></tr><tr><td valign=3D"middle" align=3D"center"><table cel=
lpadding=3D"0" cellspacing=3D"0" width=3D"651" role=3D"presentati=
on" bgcolor=3D"#EEEEEE" class=3D"EX_RESPONSIVE_TABLE_480" style=3D=
"border-collapse: collapse; table-layout: fixed;"><tr><td class=3D=
"EX_RESPONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0"></td></t=
r><tr><td valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"651" class=3D"MainTable" role=3D"p=
resentation" bgcolor=3D"#EEEEEE" style=3D"border-collapse: colla=
pse; table-layout: fixed; width: 100%;"><tr><td class=3D"EX_RESP=
ONSIVE_HIDE_CELL_480" width=3D"651" height=3D"0"></td></tr><tr><t=
d bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table i=
d=3D"ex-textbox67" cellpadding=3D"0" cellspacing=3D"0" width=3D"6=
50" class=3D"FullWidth" style=3D"line-height: normal; border-col=
lapse: separate; width: 100%;"><tr><td width=3D"648" valign=3D"t=
op" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" wid=
th=3D"100%" style=3D"border-collapse: collapse;"><tr><td style=3D=
"margin-top: 0; margin-bottom: 0; font-size: 0;"><span class=3D"=
FullWidth" style=3D"font-family: 'Arial', serif; font-size: 12px=
; line-height: 14px; color:#666666; width: 100%;">View the trans=
action details.</span></td></tr></table></td></tr></table></td></=
tr><tr><td valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"650" class=3D"CategoryBar EX_RESPO=
NSIVE_TABLE_480" role=3D"presentation" style=3D"border-collapse:=
collapse; table-layout: fixed;"><tr><td class=3D"EX_RESPONSIVE_H=
IDE_CELL_480" width=3D"650" height=3D"0"></td></tr><tr><td valign=
=3D"middle" align=3D"center"><table id=3D"ex-textbox68" cellpaddi=
ng=3D"0" cellspacing=3D"0" width=3D"650" class=3D"CategoryBar" b=
gcolor=3D"#002A54" style=3D"line-height: normal; border-collapse:=
separate; padding-bottom: 20px; padding-top: 20px;"><tr><td widt=
h=3D"648" height=3D"20" valign=3D"middle" align=3D"center"><table=
cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"bor=
der-collapse: collapse;"><tr><td class=3D"Category-BarText" styl=
e=3D"margin-top: 0; margin-bottom: 0; font-size: 0; text-align: c=
enter; line-height: 20px;"><img width=3D"20" height=3D"20" src=3D=
"https://snamwpm.eccmp.com/wpm/617/ContentUploads/CRB-Category_Ba=
rs/Apr20_Citi_RGB_CategoryIcon_CustomAlert.png" alt=3D"" style=3D=
" vertical-align: middle;"/><span class=3D"CategoryBar TS-Catego=
ryBar-Text" style=3D"font-family: 'Arial', serif; font-size: 18p=
x; color:#FFFFFF; vertical-align: middle;">=C2=A0CUSTOM ALERT</s=
pan></td></tr></table></td></tr></table></td></tr></table></td></=
tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"=
><table cellpadding=3D"0" cellspacing=3D"0" width=3D"417" class=3D=
"ValignBottom LogoHeader MobileWidth EX_RESPONSIVE_TABLE_480 EX_R=
ESPONSIVE_TABLE_480" role=3D"presentation" style=3D"border-colla=
pse: collapse; table-layout: fixed;"><tr><td class=3D"EX_RESPONSI=
VE_HIDE_CELL_480" width=3D"200" height=3D"0"></td><td class=3D"EX=
_RESPONSIVE_HIDE_CELL_480" width=3D"217" height=3D"0"></td></tr><=
tr><td valign=3D"middle"><table width=3D"200" cellpadding=3D"0" c=
ellspacing=3D"0" style=3D"border-collapse: collapse;"><tr><td wi=
dth=3D"200" align=3D"left" style=3D"padding-bottom: 25px; paddin=
g-top: 25px;"><table cellpadding=3D"0" cellspacing=3D"0" style=3D=
"border-collapse: collapse;"><tr><td width=3D"200" height=3D"19" =
align=3D"left" valign=3D"top"><img id=3D"ex-image17" src=3D"https=
://snamwpm.eccmp.com/wpm/617/ContentUploads/logos/Jan16_CI_SZ_log=
o_citi.png" alt=3D"Citi" class=3D"LogoTop" style=3D"display: blo=
ck;"/></td></tr></table></td></tr></table></td><td valign=3D"bott=
om"><table width=3D"217" cellpadding=3D"0" cellspacing=3D"0" sty=
le=3D"border-collapse: collapse;"><tr><td width=3D"217" align=3D=
"right" style=3D"padding-bottom: 25px; padding-top: 25px;"><table=
cellpadding=3D"0" cellspacing=3D"0" class=3D"SecurityZoneTop Loc=
kIcon" style=3D"border-collapse: collapse;"><tr><td align=3D"lef=
t" valign=3D"top"><table id=3D"ex-textbox69" cellpadding=3D"0" ce=
llspacing=3D"0" width=3D"164" style=3D"line-height: normal; bord=
er-collapse: separate;"><tr><td width=3D"162" valign=3D"top" alig=
n=3D"right"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"1=
00%" style=3D"border-collapse: collapse;"><tr><td class=3D"Secur=
ity-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0=
; text-align: right; line-height: 12px;"><img src=3D"https://acco=
untonline.citi.com/cards/svc/img/logo/CI_SZ_icn_lock.gif" alt=3D"=
Lock Icon"/><span class=3D"TS-Security-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 9px; color:#666666;">=C2=A0Someone=
Cardholder</span></td></tr><tr><td class=3D"Security-Text" styl=
e=3D"margin-top: 0; margin-bottom: 0; font-size: 0; text-align: r=
ight; line-height: 12px;"><span class=3D"TS-Security-Text" style=
=3D"font-family: 'Arial', serif; font-size: 9px; color:#666666;">=
Cardmember since 2021</span></td></tr><tr><td class=3D"Security-T=
ext" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; tex=
t-align: right; line-height: 12px;"><span class=3D"TS-Security-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 9px; color:=
#666666;">Account ending in</span><span class=3D"TS-Security-Text=
" style=3D"font-family: 'Arial', serif; font-size: 9px; color:#6=
66666;">=C2=A0 </span><span class=3D"TS-Security-Text" style=3D"=
font-family: 'Arial', serif; font-size: 9px; color:#666666;">1234=
</span></td></tr></table></td></tr></table></td><td align=3D"left=
" valign=3D"top"><table id=3D"ex-textbox70" cellpadding=3D"0" cel=
lspacing=3D"0" width=3D"53" style=3D"line-height: normal; border=
-collapse: separate; padding-left: 5px;"><tr><td width=3D"46" val=
ign=3D"top" align=3D"right"><img src=3D"https://snamwpm.eccmp.com=
/wpm/617/ContentUploads/cardart/March22_CardArt_DoubleCash.jpg" a=
lt=3D""/></td></tr></table></td></tr></table></td></tr></table></=
td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"m=
iddle" align=3D"center"><table cellpadding=3D"0" cellspacing=3D"0=
" class=3D"MobileWidth" style=3D"border-collapse: collapse;"><tr=
><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox71" cel=
lpadding=3D"0" cellspacing=3D"0" width=3D"420" class=3D"Headline"=
bgcolor=3D"#CCCCCC" style=3D"line-height: normal; border-collap=
se: separate; padding-left: 30px; padding-right: 30px; padding-bo=
ttom: 30px; padding-top: 30px;"><tr><td width=3D"358" valign=3D"t=
op" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" wid=
th=3D"100%" style=3D"border-collapse: collapse;"><tr><td role=3D=
'heading' aria-level=3D'1' class=3D"Headline-Title" style=3D"mar=
gin-top: 0; margin-bottom: 0; font-size: 0; line-height: 36px;"><=
img width=3D"24" height=3D"24" src=3D"https://snamwpm.eccmp.com/w=
pm/617/ContentUploads/Headline/Apr20_Citi_RGB_HeadlineIcon_Custom=
Alert.png" alt=3D""/><span class=3D"Headline TS-Headline-Title" =
style=3D"font-family: 'Arial', serif; font-size: 34px; color:#33=
3333;">=C2=A0A transaction of $3.28 was made on your account</spa=
n></td></tr><tr><td class=3D"Headline-Text" style=3D"margin-top:=
0; margin-bottom: 0; font-size: 0; padding-top: 30px; line-heigh=
t: 20px;"><span class=3D"Headline TS-Headline-Text" style=3D"fo=
nt-family: 'Arial', serif; font-size: 13px; color:#333333;">You'r=
e receiving this email based on your custom alert settings.</span=
></td></tr></table></td></tr></table></td></tr><tr><td align=3D"l=
eft" valign=3D"top"><table id=3D"ex-textbox72" cellpadding=3D"0" =
cellspacing=3D"0" width=3D"420" bgcolor=3D"#008FC9" style=3D"lin=
e-height: normal; border-collapse: separate;"><tr><td width=3D"41=
8" height=3D"5" valign=3D"middle" align=3D"center"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td style=3D"margin-top: 0; margin-bottom: =
0; font-size: 0; text-align: center; line-height: 1;"></td></tr><=
/table></td></tr></table></td></tr></table></td></tr><tr><td bgco=
lor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table cellpad=
ding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlue=
Hack MobileWidth Greeting" style=3D"border-collapse: collapse;">=
<tr><td align=3D"left" valign=3D"top" style=3D"padding-left: 30p=
x; padding-Right: 30px;"><table id=3D"ex-table33" cellpadding=3D"=
0" cellspacing=3D"0" width=3D"360" style=3D"border-collapse: col=
lapse;"><tr><td width=3D"360" height=3D"15" align=3D"left" valig=
n=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></t=
r><tr><td width=3D"360" bgcolor=3D"#EEEEEE" align=3D"left" valig=
n=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px;"><table c=
ellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"borde=
r-collapse: collapse;"><tr><td class=3D"Body-Text" style=3D"marg=
in-top: 0; margin-bottom: 0; font-size: 0; line-height: 20px;"><s=
pan class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif;=
font-size: 13px; color:#333333;">Hi, </span><span class=3D"TS-Bo=
dy-Text" style=3D"font-family: 'Arial', serif; font-size: 13px; =
color:#333333;">Someone</span><span class=3D"TS-Body-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333;=
">. The transaction made on your </span><span class=3D"TS-Body-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 13px; color=
:#333333;">Citi</span><span style=3D"font-family: 'Arial', serif=
; font-size: 13px; color:#333333;"><sup>=C2=AE</sup></span><span =
class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; fon=
t-size: 13px; color:#333333;">=C2=A0Double Cash</span><span class=
=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; font-siz=
e: 13px; color:#333333;">=C2=A0account exceeded $0.00. The transa=
ction details are listed below.</span></td></tr></table></td></tr=
><tr><td width=3D"360" height=3D"15" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr></tab=
le></td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=
=3D"middle" align=3D"center"><table cellpadding=3D"0" cellspacing=
=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlueHack MobileWidth Actio=
nSum2" style=3D"border-collapse: collapse;"><tr><td align=3D"lef=
t" valign=3D"top" style=3D"padding-left: 30px; padding-Right: 30=
px;"><table id=3D"ex-table34" cellpadding=3D"0" cellspacing=3D"0"=
width=3D"360" style=3D"border-collapse: collapse;"><tr><td cols=
pan=3D"2" width=3D"360" height=3D"5" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr><tr><=
td colspan=3D"2" width=3D"360" align=3D"left" valign=3D"top" sty=
le=3D"margin-bottom: 0px; margin-top: 0px; padding-top:10.00px; p=
adding-bottom:15.00px;"><table cellpadding=3D"0" cellspacing=3D"0=
" width=3D"100%" style=3D"border-collapse: collapse;"><tr><td ro=
le=3D'heading' aria-level=3D'2' class=3D"ActionSummaryV2-Title" r=
ole=3D"heading" aria-level=3D"2" style=3D"margin-top: 0; margin-=
bottom: 0; font-size: 0; line-height: 29px;"><span class=3D"TS-Ac=
tionSummaryV2-Title" style=3D"font-family: 'Arial', serif; font-=
size: 18px; color:#666666;">Amount: $3.28</span></td></tr></table=
></td></tr><tr><td colspan=3D"2" width=3D"360" height=3D"1" bgcol=
or=3D"#D7D7D7" align=3D"left" valign=3D"top" style=3D"margin-bot=
tom: 0px; margin-top: 0px;"></td></tr><tr><td colspan=3D"2" width=
=3D"350" height=3D"-5" align=3D"left" valign=3D"top" style=3D"ma=
rgin-bottom: 0px; margin-top: 0px; padding-top:5.00px; padding-bo=
ttom:5.00px; padding-left:5.00px; padding-right:5.00px;"></td></t=
r><tr><td width=3D"165" align=3D"left" valign=3D"top" style=3D"m=
argin-bottom: 0px; margin-top: 0px; padding-top:10.00px; padding-=
bottom:10.00px; padding-right:15.00px;"><table cellpadding=3D"0" =
cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: colla=
pse;"><tr><td class=3D"ActionSummaryV2-Label" style=3D"margin-to=
p: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><span c=
lass=3D"TS-ActionSummaryV2-Label" style=3D"font-family: 'Arial',=
serif; font-size: 13px; color:#666666;">Card Ending In</span></t=
d></tr></table></td><td width=3D"180" bgcolor=3D"#EEEEEE" align=3D=
"left" valign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0p=
x; padding-top:10.00px; padding-bottom:10.00px;"><table cellpaddi=
ng=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collap=
se: collapse;"><tr><td class=3D"ActionSummaryV2-Value" style=3D"=
margin-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;=
"><span class=3D"TS-ActionSummaryV2-Value" style=3D"font-family:=
'Arial', serif; font-size: 13px; color:#333333;">1234</span></td=
></tr></table></td></tr><tr><td width=3D"165" align=3D"left" val=
ign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; padding=
-top:10.00px; padding-bottom:10.00px; padding-right:15.00px;"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"=
border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Labe=
l" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line-=
height: 19px;"><span class=3D"TS-ActionSummaryV2-Label" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#666666;">Me=
rchant</span></td></tr></table></td><td width=3D"180" bgcolor=3D"=
#EEEEEE" align=3D"left" valign=3D"top" style=3D"margin-bottom: 0=
px; margin-top: 0px; padding-top:10.00px; padding-bottom:10.00px;=
"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" styl=
e=3D"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2=
-Value" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; =
line-height: 19px;"><span class=3D"TS-ActionSummaryV2-Value" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;">STOP &amp; SHOP </span></td></tr></table></t=
d></tr><tr><td width=3D"165" align=3D"left" valign=3D"top" style=
=3D"margin-bottom: 0px; margin-top: 0px; padding-top:10.00px; pad=
ding-bottom:10.00px; padding-right:15.00px;"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td class=3D"ActionSummaryV2-Label" style=3D"margi=
n-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><sp=
an class=3D"TS-ActionSummaryV2-Label" style=3D"font-family: 'Ari=
al', serif; font-size: 13px; color:#666666;">Date</span></td></tr=
></table></td><td width=3D"180" bgcolor=3D"#EEEEEE" align=3D"lef=
t" valign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; p=
adding-top:10.00px; padding-bottom:10.00px;"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td class=3D"ActionSummaryV2-Value" style=3D"margi=
n-top: 0; margin-bottom: 0; font-size: 0; line-height: 19px;"><sp=
an class=3D"TS-ActionSummaryV2-Value" style=3D"font-family: 'Ari=
al', serif; font-size: 13px; color:#333333;">09/13/2022</span></t=
d></tr></table></td></tr><tr><td width=3D"165" align=3D"left" va=
lign=3D"top" style=3D"margin-bottom: 0px; margin-top: 0px; paddin=
g-top:10.00px; padding-bottom:10.00px; padding-right:15.00px;"><t=
able cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D=
"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Lab=
el" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line=
-height: 19px;"><span class=3D"TS-ActionSummaryV2-Label" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#666666;">Ti=
me</span></td></tr></table></td><td width=3D"180" bgcolor=3D"#EEE=
EEE" align=3D"left" valign=3D"top" style=3D"margin-bottom: 0px; =
margin-top: 0px; padding-top:10.00px; padding-bottom:10.00px;"><t=
able cellpadding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D=
"border-collapse: collapse;"><tr><td class=3D"ActionSummaryV2-Val=
ue" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; line=
-height: 19px;"><span class=3D"TS-ActionSummaryV2-Value" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">06=
:21 PM ET</span></td></tr></table></td></tr><tr><td colspan=3D"2"=
width=3D"350" height=3D"-5" align=3D"left" valign=3D"top" style=
=3D"margin-bottom: 0px; margin-top: 0px; padding-top:5.00px; padd=
ing-bottom:5.00px; padding-left:5.00px; padding-right:5.00px;"></=
td></tr></table></td></tr></table></td></tr><tr><td bgcolor=3D"#F=
FFFFF" valign=3D"middle" align=3D"center"><table cellpadding=3D"0=
" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"SamBlueHack Mobi=
leWidth Body2" style=3D"border-collapse: collapse;"><tr><td alig=
n=3D"left" valign=3D"top" style=3D"padding-left: 30px; padding-R=
ight: 30px;"><table id=3D"ex-table35" cellpadding=3D"0" cellspaci=
ng=3D"0" width=3D"360" style=3D"border-collapse: collapse;"><tr>=
<td width=3D"360" height=3D"15" align=3D"left" valign=3D"top" st=
yle=3D"margin-bottom: 0px; margin-top: 0px;"></td></tr><tr><td wi=
dth=3D"360" bgcolor=3D"#EEEEEE" align=3D"left" valign=3D"top" st=
yle=3D"margin-bottom: 0px; margin-top: 0px; padding-top:0.00px; p=
adding-bottom:15.00px;"><table cellpadding=3D"0" cellspacing=3D"0=
" width=3D"100%" style=3D"border-collapse: collapse;"><tr><td cl=
ass=3D"Body-Text" style=3D"margin-top: 0; margin-bottom: 0; font=
-size: 0; line-height: 20px;"><span class=3D"TS-Body-Text" style=
=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333;"=
>To </span><span style=3D"font-family: 'Arial', serif; font-size=
: 13px; color:#333333;"><a href=3D"https://fm.info6.citi.com/ats/=
url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%3A%2F%2Fo=
nline.citi.com%2FUS%2FJRS%2Finfrastructure%2Fnewretarget.do%3Fnex=
t_page%3Djfp%7Cdashboard%26app_store%3DY%26enid%3DB50D2AC82C1732C=
F446BAF522FB4F4DC4E64&amp;linkName=3DCitiMobileAppDashbrd&amp;tra=
nsId=3DE2022091386272791" title=3D"view transactions" target=3D"_=
blank"><span class=3D"TS-Body-Text" style=3D"font-family: 'Arial=
', serif; font-size: 13px; text-decoration: underline; color:#007=
6C0;">view transactions</span></a></span><span class=3D"TS-Body-T=
ext" style=3D"font-family: 'Arial', serif; font-size: 13px; colo=
r:#333333;">=C2=A0on your account or </span><span style=3D"font-=
family: 'Arial', serif; font-size: 13px; color:#333333;"><a href=3D=
"https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;w=
e=3D1&amp;url=3Dhttps%3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finfras=
tructure%2Fnewretarget.do%3Fnext_page%3Djfp%7COmniChannelAlertsDe=
epDrop%26app_store%3DY%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4=
E64&amp;linkName=3DCT_CitiAlerts&amp;transId=3DE2022091386272791"=
title=3D"modify your custom alerts" target=3D"_blank"><span clas=
s=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif; font-si=
ze: 13px; text-decoration: underline; color:#0076C0;">modify your=
custom alerts</span></a></span><span class=3D"TS-Body-Text" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;">, simply visit the </span><span class=3D"TS-Body-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">Ci=
ti Mobile</span><span class=3D"TS-Body-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 13px; color:#333333;"><sup>=C2=AE</=
sup></span><span class=3D"TS-Body-Text" style=3D"font-family: 'A=
rial', serif; font-size: 13px; color:#333333;">=C2=A0App</span><s=
pan class=3D"TS-Body-Text" style=3D"font-family: 'Arial', serif;=
font-size: 13px; color:#333333;">=C2=A0or </span><span class=3D"=
TS-Body-Text" style=3D"font-family: 'Arial', serif; font-size: 1=
3px; color:#333333;">Citi</span><span class=3D"TS-Body-Text" sty=
le=3D"font-family: 'Arial', serif; font-size: 13px; color:#333333=
;"><sup>=C2=AE</sup></span><span class=3D"TS-Body-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">=C2=
=A0Online</span><span class=3D"TS-Body-Text" style=3D"font-famil=
y: 'Arial', serif; font-size: 13px; color:#333333;">.</span></td>=
</tr></table></td></tr></table></td></tr></table></td></tr><tr><t=
d bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"center"><table c=
ellpadding=3D"0" cellspacing=3D"0" class=3D"MobileWidth SignoffAl=
l" style=3D"border-collapse: collapse;"><tr><td align=3D"left" v=
align=3D"top"><table id=3D"ex-textbox73" cellpadding=3D"0" cellsp=
acing=3D"0" width=3D"420" bgcolor=3D"#008FC9" style=3D"line-heig=
ht: normal; border-collapse: separate;"><tr><td width=3D"418" hei=
ght=3D"5" valign=3D"middle" align=3D"center"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td style=3D"margin-top: 0; margin-bottom: 0; font=
-size: 0; text-align: center; line-height: 7px;"></td></tr></tabl=
e></td></tr></table></td></tr><tr><td align=3D"left" valign=3D"to=
p"><table id=3D"ex-textbox74" cellpadding=3D"0" cellspacing=3D"0"=
width=3D"420" class=3D"Signoff" bgcolor=3D"#CCCCCC" style=3D"li=
ne-height: normal; border-collapse: separate; padding-left: 40px;=
padding-right: 40px; padding-bottom: 40px; padding-top: 32px;"><=
tr><td width=3D"338" valign=3D"top" align=3D"left"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td class=3D"Signoff-Text" style=3D"margin-=
top: 0; margin-bottom: 0; font-size: 0; padding-bottom: 30px; lin=
e-height: 20px;"><span class=3D"Signoff TS-Signoff-Text" style=3D=
"font-family: 'Arial', serif; font-size: 13px; color:#333333;">Ci=
ti is at your side before, during and after every purchase.</span=
></td></tr><tr><td class=3D"Signoff-Signature" style=3D"margin-t=
op: 0; margin-bottom: 0; font-size: 0; text-align: right; line-he=
ight: 1;"><span class=3D"Signoff TS-Signoff-Signature" style=3D=
"font-family: 'Arial', serif; font-size: 18px; color:#333333;">Yo=
ur Citi Team</span></td></tr></table></td></tr></table></td></tr>=
<tr><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox75" =
cellpadding=3D"0" cellspacing=3D"0" width=3D"420" style=3D"line-=
height: normal; border-collapse: separate;"><tr><td width=3D"418"=
height=3D"15" valign=3D"top" align=3D"left"></td></tr></table></=
td></tr></table></td></tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"m=
iddle" align=3D"center"><table cellpadding=3D"0" cellspacing=3D"0=
" class=3D"JordanHack SamGrayHack MobileWidth EX_RESPONSIVE_TABLE=
_480 AccountLinks" style=3D"border-collapse: collapse;"><tr><td =
align=3D"left" valign=3D"top" style=3D"padding-bottom: 15px; pad=
ding-top: 15px;"><table id=3D"ex-table36" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"130" style=3D"border-collapse: collapse;">=
<tr><td width=3D"130" height=3D"20" align=3D"center" valign=3D"m=
iddle" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cell=
padding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-c=
ollapse: collapse;"><tr><td class=3D"ContactUs-Text" style=3D"ma=
rgin-top: 0; margin-bottom: 0; font-size: 0; text-align: center; =
line-height: 20px;"><span style=3D"font-family: 'Arial', serif; =
font-size: 13px; color:#666666;"><a href=3D"https://fm.info6.citi=
.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%=
3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finfrastructure%2Fnewretarget=
.do%3Fnext_page%3Djfp%7Cdashboard%26app_store%3DN%26enid%3DB50D2A=
C82C1732CF446BAF522FB4F4DC4E64&amp;linkName=3DCN_ViewYourAcct&amp=
;transId=3DE2022091386272791" title=3D"View Your Account" target=3D=
"_blank"><span class=3D"TS-ContactUs-Text" style=3D"font-family:=
'Arial', serif; font-size: 13px; text-decoration: underline; col=
or:#666666;">View Your Account</span></a></span></td></tr></table=
></td></tr></table></td><td align=3D"left" valign=3D"top" style=3D=
"padding-bottom: 15px; padding-top: 15px;"><table id=3D"ex-table3=
7" cellpadding=3D"0" cellspacing=3D"0" width=3D"180" style=3D"bo=
rder-collapse: collapse;"><tr><td width=3D"180" height=3D"20" al=
ign=3D"center" valign=3D"middle" style=3D"margin-bottom: 0px; mar=
gin-top: 0px; border-left: #D7D7D7 1px solid; border-right: #D7D7=
D7 1px solid;"><table cellpadding=3D"0" cellspacing=3D"0" width=3D=
"100%" style=3D"border-collapse: collapse;"><tr><td class=3D"Con=
tactUs-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size=
: 0; text-align: center; line-height: 20px;"><span style=3D"font=
-family: 'Arial', serif; font-size: 13px; color:#666666;"><a href=
=3D"https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&am=
p;we=3D1&amp;url=3Dhttps%3A%2F%2Fonline.citi.com%2FUS%2FJRS%2Finf=
rastructure%2Fnewretarget.do%3Fnext_page%3Djfp%7Cjcbol_pnt_crecar=
pay_EOT%26app_store%3DN%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC=
4E64&amp;linkName=3DCN_PAY_ONLINE_URL&amp;transId=3DE202209138627=
2791" title=3D"Pay Your Bill" target=3D"_blank"><span class=3D"TS=
-ContactUs-Text" style=3D"font-family: 'Arial', serif; font-size=
: 13px; text-decoration: underline; color:#666666;">Pay Your Bill=
</span></a></span></td></tr></table></td></tr></table></td><td al=
ign=3D"left" valign=3D"top" style=3D"padding-bottom: 15px; paddi=
ng-top: 15px;"><table id=3D"ex-table38" cellpadding=3D"0" cellspa=
cing=3D"0" width=3D"110" style=3D"border-collapse: collapse;"><t=
r><td width=3D"111" height=3D"20" align=3D"center" valign=3D"mid=
dle" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cellpa=
dding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-col=
lapse: collapse;"><tr><td class=3D"ContactUs-Text" style=3D"marg=
in-top: 0; margin-bottom: 0; font-size: 0; text-align: center; li=
ne-height: 20px;"><span style=3D"font-family: 'Arial', serif; fo=
nt-size: 13px; color:#666666;"><a href=3D"https://fm.info6.citi.c=
om/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%3A=
%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fportal%2Fcontactus.do%3FID=
%3DContactUsCards%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&a=
mp;linkName=3DCN_CONTACT_US_URL&amp;transId=3DE2022091386272791" =
title=3D"Contact Us" target=3D"_blank"><span class=3D"TS-ContactU=
s-Text" style=3D"font-family: 'Arial', serif; font-size: 13px; t=
ext-decoration: underline; color:#666666;">Contact Us</span></a><=
/span></td></tr></table></td></tr></table></td></tr></table></td>=
</tr><tr><td bgcolor=3D"#FFFFFF" valign=3D"middle" align=3D"cente=
r"><table cellpadding=3D"0" cellspacing=3D"0" class=3D"PLTModule"=
style=3D"border-collapse: collapse;"><tr><td align=3D"left" val=
ign=3D"top" style=3D"padding-top: 15px;"><table cellpadding=3D"0=
" cellspacing=3D"0" style=3D"border-collapse: collapse;"><tr><td=
class=3D"HideDesktopPLT" height=3D"110"><img id=3D"ex-image18" s=
rc=3D"https://snamwpm.eccmp.com/wpm/617/ContentUploads/misc/Feb20=
_PLT_Desktop.png" alt=3D"Citi, Welcome what's next" style=3D"dis=
play: block;"/></td></tr></table></td><td align=3D"left" valign=3D=
"top" style=3D"padding-top: 15px;"><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse: collapse;"><tr><td class=
=3D"ShowMobilePLT" style=3D"overflow: hidden; float: center; disp=
lay: none; padding-top:15.00px; padding-bottom:0.00px;" height=3D=
"110"><img id=3D"ex-image19" src=3D"https://snamwpm.eccmp.com/wpm=
/617/ContentUploads/misc/Feb20_PLT_Mobile.png" alt=3D"Citi, Welco=
me what's next" /></td></tr></table></td></tr></table></td></tr><=
tr><td bgcolor=3D"#EEEEEE" valign=3D"middle" align=3D"center"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=
=3D"MobileWidth" style=3D"border-collapse: collapse;"><tr><td al=
ign=3D"left" valign=3D"top" style=3D"padding-left: 15px; padding=
-Right: 15px;"><table id=3D"ex-textbox76" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"620" bgcolor=3D"#EEEEEE" style=3D"line-hei=
ght: normal; border-collapse: separate;"><tr><td width=3D"618" he=
ight=3D"16" valign=3D"top" align=3D"left"></td></tr></table></td>=
</tr><tr><td align=3D"left" valign=3D"top" style=3D"padding-left=
: 15px; padding-Right: 15px;"><table id=3D"ex-textbox77" cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"620" style=3D"line-height: =
normal; border-collapse: separate; padding-bottom: 3px;"><tr><td =
width=3D"618" valign=3D"top" align=3D"left"><table cellpadding=3D=
"0" cellspacing=3D"0" width=3D"100%" style=3D"border-collapse: c=
ollapse;"><tr><td role=3D'heading' aria-level=3D'2' class=3D"Emai=
lApps-Intro" style=3D"margin-top: 0; margin-bottom: 0; font-size=
: 0; line-height: 13px;"><span class=3D"TS-EmailApps-Text" style=
=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;"=
>Download the </span><span class=3D"TS-EmailApps-Text" style=3D"=
font-family: 'Arial', serif; font-size: 10px; color:#666666;">Cit=
i Mobile</span><span class=3D"TS-EmailApps-Text" style=3D"font-f=
amily: 'Arial', serif; font-size: 10px; color:#666666;"><sup>=C2=AE=
</sup></span><span class=3D"TS-EmailApps-Text" style=3D"font-fam=
ily: 'Arial', serif; font-size: 10px; color:#666666;">=C2=A0App</=
span></td></tr></table></td></tr></table></td></tr><tr><td align=3D=
"left" valign=3D"top" style=3D"padding-left: 15px; padding-Right=
: 15px;"><table cellpadding=3D"0" cellspacing=3D"0" class=3D"EX_R=
ESPONSIVE_TABLE_480 AppStore" style=3D"border-collapse: collapse=
;"><tr><td align=3D"left" valign=3D"top"><table id=3D"ex-textbox7=
8" cellpadding=3D"0" cellspacing=3D"0" width=3D"135" style=3D"li=
ne-height: normal; border-collapse: separate;"><tr><td width=3D"1=
33" height=3D"40" valign=3D"middle" align=3D"left"><table cellpad=
ding=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-coll=
apse: collapse;"><tr><td style=3D"margin-top: 0; margin-bottom: =
0; font-size: 0;"><span style=3D"font-family: 'Arial', serif; fo=
nt-size: 15px; line-height: 17px; color:#000000;"><a href=3D"http=
s://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1=
&amp;url=3Dhttps%3A%2F%2Fitunes.apple.com%2Fapp%2Fciti-mobile-sm%=
2Fid301724680%3Fmt%3D8%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4=
E64&amp;linkName=3DCN_APPSTORE&amp;transId=3DE2022091386272791" t=
itle=3D"Download the Citi Mobile App from the App Store" target=3D=
"_blank"><img src=3D"https://snamwpm.eccmp.com/wpm/617/ContentUpl=
oads/misc/Feb20_AppStore_transp.png" alt=3D""/></a></span></td></=
tr></table></td></tr></table></td><td width=3D"13"></td><td align=
=3D"left" valign=3D"top"><table id=3D"ex-textbox79" cellpadding=3D=
"0" cellspacing=3D"0" width=3D"134" style=3D"line-height: normal=
; border-collapse: separate;"><tr><td width=3D"132" height=3D"40"=
valign=3D"middle" align=3D"left"><table cellpadding=3D"0" cellsp=
acing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;">=
<tr><td style=3D"margin-top: 0; margin-bottom: 0; font-size: 0;"=
><span style=3D"font-family: 'Arial', serif; font-size: 15px; li=
ne-height: 17px; color:#000000;"><a href=3D"https://fm.info6.citi=
.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&amp;url=3Dhttps%=
3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dcom.citi.=
citimobile%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&amp;link=
Name=3DCN_GOOGLEPLAY&amp;transId=3DE2022091386272791" title=3D"Do=
wnload the Citi Mobile App from Google Play" target=3D"_blank"><i=
mg src=3D"https://snamwpm.eccmp.com/wpm/617/ContentUploads/misc/F=
eb20_GooglePlay_transp.png" alt=3D""/></a></span></td></tr></tabl=
e></td></tr></table></td></tr></table></td></tr><tr><td align=3D"=
left" valign=3D"top" style=3D"padding-left: 15px; padding-Right:=
15px;"><table id=3D"ex-textbox80" cellpadding=3D"0" cellspacing=3D=
"0" width=3D"620" bgcolor=3D"#EEEEEE" style=3D"line-height: norm=
al; border-collapse: separate; padding-top: 7px;"><tr><td width=3D=
"618" valign=3D"top" align=3D"left"><table cellpadding=3D"0" cell=
spacing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;=
"><tr><td class=3D"EmailApps-Concl" style=3D"margin-top: 0; marg=
in-bottom: 0; font-size: 0; line-height: 12px;"><span class=3D"TS=
-EmailApps-Text" style=3D"font-family: 'Arial', serif; font-size=
: 10px; color:#666666;">Apple and the Apple logo are trademarks o=
f Apple Inc. Registered in the U.S. and other countries. App Stor=
e is a service mark of Apple Inc., registered in the U.S. and oth=
er countries. Android, Google Play, and the Google Play logo are =
trademarks of Google LLC.<br /><br /></span></td></tr><tr><td cla=
ss=3D"EmailApps-Concl" style=3D"margin-top: 0; margin-bottom: 0;=
font-size: 0; line-height: 12px;"><span class=3D"TS-EmailApps-Te=
xt" style=3D"font-family: 'Arial', serif; font-size: 10px; color=
:#666666;">Citibank</span><span class=3D"TS-EmailApps-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;=
"><sup>=C2=AE</sup></span><span class=3D"TS-EmailApps-Text" styl=
e=3D"font-family: 'Arial', serif; font-size: 10px; color:#666666;=
"> is not responsible for products and services offered by other =
companies.<br /><br /></span></td></tr></table></td></tr></table>=
</td></tr></table></td></tr><tr><td valign=3D"middle" align=3D"ce=
nter"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEE=
EE" class=3D"MobileWidth" style=3D"border-collapse: collapse;"><=
tr><td align=3D"left" valign=3D"top" style=3D"padding-left: 15px=
; padding-right: 15px; ;"><table cellpadding=3D"0" cellspacing=3D=
"0" bgcolor=3D"#EEEEEE" style=3D"border-collapse: collapse;"><tr=
><td align=3D"left" valign=3D"top"><table cellpadding=3D"0" cells=
pacing=3D"0" bgcolor=3D"#EEEEEE" style=3D"border-collapse: colla=
pse;"><tr><td align=3D"left" valign=3D"top"></td><td align=3D"lef=
t" valign=3D"top"></td></tr></table></td></tr><tr><td align=3D"le=
ft" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" bgc=
olor=3D"#EEEEEE" class=3D"FooterLogo JordanHack SamGrayHack EX_RE=
SPONSIVE_TABLE_480" style=3D"border-collapse: collapse;"><tr><td=
align=3D"left" valign=3D"top"></td><td align=3D"left" valign=3D"=
top"></td><td align=3D"left" valign=3D"top"></td></tr></table></t=
d></tr></table></td></tr></table></td></tr><tr><td bgcolor=3D"#EE=
EEEE" valign=3D"middle" align=3D"center"><table cellpadding=3D"0"=
cellspacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"MobileWidth" sty=
le=3D"border-collapse: collapse;"><tr><td align=3D"left" valign=3D=
"top" style=3D"padding-left: 15px; padding-right: 15px; ;"><tabl=
e cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" style=3D=
"border-collapse: collapse;"><tr><td align=3D"left" valign=3D"top=
"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EEEEEE" =
class=3D"FooterLogo JordanHack SamGrayHack EX_RESPONSIVE_TABLE_48=
0" style=3D"border-collapse: collapse;"><tr><td align=3D"left" v=
align=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" style=3D=
"border-collapse: collapse;"><tr><td width=3D"485" height=3D"32">=
<img id=3D"ex-image20" src=3D"https://snamwpm.eccmp.com/wpm/617/C=
ontentUploads/logos/Jun20_Citi_RGB_BWFooterLogo.png" alt=3D"Citi"=
style=3D"display: block;"/></td></tr></table></td><td align=3D"=
left" valign=3D"top"><table id=3D"ex-textbox81" cellpadding=3D"0"=
cellspacing=3D"0" width=3D"75" style=3D"line-height: normal; bo=
rder-collapse: separate;"><tr><td width=3D"73" height=3D"32" vali=
gn=3D"bottom" align=3D"left"><table cellpadding=3D"0" cellspacing=
=3D"0" width=3D"100%" style=3D"border-collapse: collapse;"><tr><=
td class=3D"Privacy-Button1" style=3D"margin-top: 0; margin-bott=
om: 0; font-size: 0;"><span style=3D"font-family: 'Arial', serif=
; font-size: 12px; line-height: 14px; color:#666666;"><a href=3D"=
https://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=
=3D1&amp;url=3Dhttps%3A%2F%2Fwww.citibank.com%2Fus%2Fcards%2Fpriv=
acy.htm%26enid%3DB50D2AC82C1732CF446BAF522FB4F4DC4E64&amp;linkNam=
e=3DCN_PRIVACY_URL&amp;transId=3DE2022091386272791" title=3D"Priv=
acy" target=3D"_blank"><span class=3D"TS-Privacy-Button" style=3D=
"font-family: 'Arial', serif; font-size: 12px; line-height: 14px;=
text-decoration: underline; color:#666666;">Privacy</span></a></=
span></td></tr></table></td></tr></table></td><td align=3D"left" =
valign=3D"top"><table id=3D"ex-textbox82" cellpadding=3D"0" cells=
pacing=3D"0" width=3D"60" style=3D"line-height: normal; border-c=
ollapse: separate;"><tr><td width=3D"58" height=3D"32" valign=3D"=
bottom" align=3D"left"><table cellpadding=3D"0" cellspacing=3D"0"=
width=3D"100%" style=3D"border-collapse: collapse;"><tr><td cla=
ss=3D"Privacy-Button2" style=3D"margin-top: 0; margin-bottom: 0;=
font-size: 0;"><span style=3D"font-family: 'Arial', serif; font=
-size: 12px; line-height: 14px; color:#666666;"><a href=3D"https:=
//fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&a=
mp;url=3Dhttps%3A%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fpands%2Fd=
etail.do%3FID%3DEmailFraud%26enid%3DB50D2AC82C1732CF446BAF522FB4F=
4DC4E64&amp;linkName=3DCN_SECURITY_URL&amp;transId=3DE20220913862=
72791" title=3D"Security" target=3D"_blank"><span class=3D"TS-Pri=
vacy-Button" style=3D"font-family: 'Arial', serif; font-size: 12=
px; line-height: 14px; text-decoration: underline; color:#666666;=
">Security</span></a></span></td></tr></table></td></tr></table><=
/td></tr></table></td></tr><tr><td align=3D"left" valign=3D"top">=
<table id=3D"ex-table39" cellpadding=3D"0" cellspacing=3D"0" widt=
h=3D"620" class=3D"SamBlueHack" style=3D"border-collapse: collap=
se;"><tr><td colspan=3D"2" width=3D"620" align=3D"left" valign=3D=
"top" style=3D"margin-bottom: 0px; margin-top: 0px; padding-top:1=
5.00px; padding-bottom:0.00px;"><table cellpadding=3D"0" cellspac=
ing=3D"0" width=3D"100%" style=3D"border-collapse: collapse;"><t=
r><td class=3D"Footnote-Text" style=3D"margin-top: 0; margin-bot=
tom: 0; font-size: 0; padding-bottom: 15px; line-height: 12px;"><=
img src=3D"https://accountonline.citi.com/cards/svc/img/logo/CI_S=
Z_icn_lock.gif" alt=3D""/><span class=3D"SamBlueHack" style=3D"=
font-family: 'Arial', serif; font-size: 9px; color:#000000;">The =
security zone at the top of this email helps you verify that it w=
as in fact sent by Citi.</span></td></tr><tr><td class=3D"Footnot=
e-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; =
padding-bottom: 15px; line-height: 12px;"><span class=3D"SamBlue=
Hack TS-Footnote-TextUnd" role=3D"heading" aria-level=3D"3" styl=
e=3D"font-family: 'Arial', serif; font-size: 9px; text-decoration=
: underline; color:#666666;">ABOUT THIS MESSAGE</span><span clas=
s=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Arial'=
, serif; font-size: 9px; color:#666666;"><br /></span><span clas=
s=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Arial'=
, serif; font-size: 9px; color:#666666;">This email is sent by Ci=
ti Cards to keep you informed about your Citi credit card, includ=
ing updates about your account activity and information about fea=
tures and services to help you effectively manage your account. H=
ave questions? Please do not reply to this service email. Instead=
, just </span><span class=3D"SamBlueHack" style=3D"font-family:=
'Arial', serif; font-size: 9px; color:#666666;"><a href=3D"https=
://fm.info6.citi.com/ats/url.aspx?cr=3D617&amp;wu=3D1&amp;we=3D1&=
amp;url=3Dhttps%3A%2F%2Fonline.citibank.com%2FUS%2FJRS%2Fportal%2=
Fcontactus.do%3FID%3DContactUsCards%26enid%3DB50D2AC82C1732CF446B=
AF522FB4F4DC4E64&amp;linkName=3DCN_CONTACT_US_URL&amp;transId=3DE=
2022091386272791" title=3D"contact us" target=3D"_blank"><span c=
lass=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Ari=
al', serif; font-size: 9px; text-decoration: underline; color:#00=
76C0;">contact us</span></a></span><span class=3D"SamBlueHack TS=
-Footnote-Text" style=3D"font-family: 'Arial', serif; font-size:=
9px; color:#666666;">.</span></td></tr><tr><td class=3D"Footnote=
-Text" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0; p=
adding-bottom: 15px; line-height: 12px;"><span class=3D"SamBlueH=
ack TS-Footnote-Text" style=3D"font-family: 'Arial', serif; font=
-size: 9px; color:#666666;">Our mailing address: </span><span cl=
ass=3D"SamBlueHack TS-Footnote-Text" style=3D"font-family: 'Aria=
l', serif; font-size: 9px; color:#666666;">Citibank Customer Serv=
ice P. O. Box 6500 Sioux Falls, SD 57117</span></td></tr></table>=
</td></tr></table></td></tr><tr><td align=3D"left" valign=3D"top"=
></td></tr><tr><td align=3D"left" valign=3D"top"></td></tr><tr><t=
d align=3D"left" valign=3D"top"><table id=3D"ex-table40" cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"618" style=3D"border-collap=
se: collapse;"><tr><td width=3D"618" align=3D"left" valign=3D"to=
p" style=3D"margin-bottom: 0px; margin-top: 0px;"><table cellpadd=
ing=3D"0" cellspacing=3D"0" width=3D"100%" style=3D"border-colla=
pse: collapse;"><tr><td class=3D"Footnote-Text" style=3D"margin-=
top: 0; margin-bottom: 0; font-size: 0; padding-bottom: 15px; lin=
e-height: 12px;"><span style=3D"font-family: 'Arial', serif; fon=
t-size: 9px; color:#000000;"><sup>=C2=A9</sup></span><span class=3D=
"TS-Footnote-Text" style=3D"font-family: 'Arial', serif; font-si=
ze: 9px; color:#666666;">2022 Citibank, N.A. Citi, Citibank, Citi=
with Arc Design and Citi Mobile are registered service marks of =
Citigroup Inc.</span></td></tr></table></td></tr></table></td></t=
r></table></td></tr></table></td></tr><tr><td bgcolor=3D"#EEEEEE"=
valign=3D"middle" align=3D"center"><table cellpadding=3D"0" cell=
spacing=3D"0" bgcolor=3D"#EEEEEE" class=3D"MobileWidth Auditline =
PUB47 7/24/2017" style=3D"border-collapse: collapse;"><tr><td al=
ign=3D"left" valign=3D"top" style=3D"padding-left: 15px; padding=
-right: 15px; padding-bottom: 30px; padding-top: 10px;"><div aria=
-hidden=3D"true"><table id=3D"ex-textbox83" cellpadding=3D"0" cel=
lspacing=3D"0" width=3D"620" style=3D"line-height: normal; borde=
r-collapse: separate;"><tr><td width=3D"618" valign=3D"top" align=
=3D"left"><table cellpadding=3D"0" cellspacing=3D"0" width=3D"100=
%" style=3D"border-collapse: collapse;"><tr><td aria-hidden=3D"t=
rue" style=3D"margin-top: 0; margin-bottom: 0; font-size: 0;"><s=
pan style=3D"font-family: 'Arial', serif; font-size: 11px; line-=
height: 13px; color:#666666;">LBCA2012001 E2022091386272791 142</=
span></td></tr></table></td></tr></table></div></td></tr></table>=
</td></tr><tr><td bgcolor=3D"#EEEEEE" valign=3D"middle" align=3D"=
center"><table cellpadding=3D"0" cellspacing=3D"0" bgcolor=3D"#EE=
EEEE" style=3D"border-collapse: collapse;"><tr><td align=3D"left=
" valign=3D"top" style=3D"padding-left: 15px; padding-right: 15p=
x; padding-bottom: 30px; padding-top: 10px;"></td></tr></table></=
td></tr></table></td></tr></table></td></tr></body></html>=0A=0A<=
html>=0A<body><img src=3D"https://l.info6.citi.com/rts/open.aspx?=
tp=3Dk-F7hweSyfxHq-2ztnSrbT0PH-1DZkJcXHic0-AlOVWtE3JWp-1uJ1ezJM1n=
I-A7nnrDubnYX-FrDE2rA9H5E-LQl9Bxxky1u-I9Egz10Ooh1-6sNABv0GUnZ" he=
ight=3D"1" width=3D"1" style=3D"display:none"></body>=0A</html>
----boundary_3077047_8261d5ea-f276-4ebc-a732-d4540f2a39c8--

538
src/parse/testdata/td/td.eml vendored Normal file
View File

@ -0,0 +1,538 @@
Delivered-To: me@cardholer.com
Received: by 2002:a59:c04d:0:b0:2de:4d02:b586 with SMTP id d13csp749280vqp;
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
X-Google-Smtp-Source: AMsMyM5HM0aO06eNSxS8GWwlUcqEZi0K+Ax8WfwHJfOJltq+r7SPe5q54KrxW/7UOoGkHGR2Je2e
X-Received: by 2002:a05:620a:4402:b0:6ce:a1e0:955c with SMTP id v2-20020a05620a440200b006cea1e0955cmr9093805qkp.656.1663456941219;
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1663456941; cv=none;
d=google.com; s=arc-20160816;
b=Ueq2MdCf5tYoroXuCKL9Jo7MFjzh82CfLq+wXKw034S+tJ639BNdS57K4yc9Q3gPeM
NGe8GAliFqbWZR7EF2M62y4U4JaYQTNVNGZc8vjoJaKq6PjKhI5a4hebUc9bYk5Rw6ZY
mrYAokA6BCsg6FHfXIybhbeS3wLOnVIUzo6Uk4Cc5ZG6j5bRxGo+d/exb2jJz0BmevrS
FHzux5vHGKYMDLIKobYD+YD/QzGoawsyDkz924h4uTWvChjboAZ1U3RjJMOh1KL5RedC
KrPZkztRkhKV2+AghskzXI679sDWsNPzgfpk72lLlEpkmDghgWGp9zDNtGArOX2/b5aW
LyTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=mime-version:subject:to:from:date:ump:dkim-signature:dkim-signature
:message-id;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=i958bn2iyWMVA1k9ZO9D8DmshZOfMVOomXOjoRNt9nz8A2oLs0k7C+7BJIQKbETE3k
vK1IicGbGr6WykX9/YP1vG/7cJN94jvYoTJ+ix/bHUlLDe33tu209H9pJLkv828VgvS2
vUI9TVYUW6y8tORE08wUBvrkFb1esLJds8N3+bDbVt8MM03hUOG/kwObVrkmxGI8BmNA
SpYGIljf+cEWs9e9JEsSh7H4D8kKTqFqIPStngJC/uaaZzVPkN+HaOPwEw6TNy8JLphK
niKaSXVMunttiLb49Ub/kkcnS7l3Eu//D88YwsthMfNOoXY7+TdPu95p2DmsZjSwD3dV
7K0w==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
spf=pass (google.com: domain of alerts@td.com designates 142.205.124.102 as permitted sender) smtp.mailfrom=alerts@td.com;
dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=td.com
Return-Path: <alerts@td.com>
Received: from appmail.tdbank.ca ([142.205.124.102])
by mx.google.com with ESMTPS id ez3-20020a05622a4c8300b0035a89595940si2725573qtb.19.2022.09.17.16.22.21
for <me@cardholer.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
Received-SPF: pass (google.com: domain of alerts@td.com designates 142.205.124.102 as permitted sender) client-ip=142.205.124.102;
Authentication-Results: mx.google.com;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
spf=pass (google.com: domain of alerts@td.com designates 142.205.124.102 as permitted sender) smtp.mailfrom=alerts@td.com;
dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=td.com
Message-ID: <632656ad.050a0220.bcc6c.9e6fSMTPIN_ADDED_BROKEN@mx.google.com>
X-Google-Original-Message-ID: UROU3AOd4s3mx6k/aoBM0K/g2DldeudkY4tHZlHi44bzlocYs5YRehID/TYnRP0oI+ZkQQXSfEmBKYYFBP49rG2BZiIbRYy4cATmYYzhNgs/l+Md+32ozD3LdWiwlmAn
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=td.com; s=PRDIPT012018Jul;
h=date:from:to:message-id:subject:mime-version;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=rcA3ybo1V7xB4EHJWpjly1wAvZYAflqBVz+1Jq4RxqnIUZqsM5p2ElQd
KPwF1owk6bGOdat9eJFLWXu9afnwllbWh5BxBG5hnUGr/csxJFVN98CjD
NuEC8OzhfSP9Josgsj5O2kvtfYwEwdqu9tDw5Y36M/bAzQGMB8Ro/lzlV
VWdfIrGAqTP49Grjz/VwxX3WEtRY9NDOrNYakMOvSKGR52m6zF5N3hFWK
VryMbfV+GlkKcCJhApAEJrDuXnBGWclTShh0rST+gDNq4hvutHRrU9J5Z
f2juqutKAH85jU46G0H2QOJxzzgktXP8BLvZrvF/780v/qeLgoglFIipK
Q==;
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=td.com; s=PRDIPT012018Jul;
h=date:from:to:message-id:subject:mime-version;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=rcA3ybo1V7xB4EHJWpjly1wAvZYAflqBVz+1Jq4RxqnIUZqsM5p2ElQd
KPwF1owk6bGOdat9eJFLWXu9afnwllbWh5BxBG5hnUGr/csxJFVN98CjD
NuEC8OzhfSP9Josgsj5O2kvtfYwEwdqu9tDw5Y36M/bAzQGMB8Ro/lzlV
VWdfIrGAqTP49Grjz/VwxX3WEtRY9NDOrNYakMOvSKGR52m6zF5N3hFWK
VryMbfV+GlkKcCJhApAEJrDuXnBGWclTShh0rST+gDNq4hvutHRrU9J5Z
f2juqutKAH85jU46G0H2QOJxzzgktXP8BLvZrvF/780v/qeLgoglFIipK
Q==;
UMP: SOC_NE_US
Date: Sat, 17 Sep 2022 19:22:20 -0400 (EDT)
From: alerts@td.com
To: me@cardholer.com
Subject: Purchase Alert For Your TD Cash
credit card
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_2707799_1179439123.1663456939464"
X-RCIS-Action: ALLOW
------=_Part_2707799_1179439123.1663456939464
Content-Type: multipart/related;
boundary="----=_Part_2707800_1920637874.1663456939464"
------=_Part_2707800_1920637874.1663456939464
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: 7bit
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
Purchase Alert For Your TD Cash
credit card
</title>
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a { padding:0; }
body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }
table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }
img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }
p { display:block;margin:13px 0; }
</style>
<!--[if mso]>
<noscript>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
</noscript>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 { width:100% !important; max-width: 100%; }
}
</style>
<style media="screen and (min-width:480px)">
.moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }
</style>
<style type="text/css">
[owa] .mj-column-per-100 { width:100% !important; max-width: 100%; }
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile { width: 100% !important; }
td.mj-full-width-mobile { width: auto !important; }
}
</style>
</head>
<body style="word-spacing:normal;">
<div style>
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#f3f3f3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#f3f3f3;background-color:#f3f3f3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#f3f3f3;background-color:#f3f3f3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;padding-bottom:10px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:540px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:250px;">
<img alt="TD Bank, America's Most Convenient Bank" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/TDB_tag_cntr_RGB.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="250">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#00B624" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#00B624;background-color:#00B624;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#00B624;background-color:#00B624;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px 20px 0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;padding-bottom:10px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;font-weight:700;line-height:1;text-align:left;color:#000000;">RE: TD Cash
credit card</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">A purchase was made on 2022-09-17, which
is greater than the pre-set threshold value for your card ending in
1234.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><ul style="margin: 0; margin-left: 25px; padding: 0">
<li>Merchant Name: PAYPAL *MARKETPLACE</li>
<li>Amount: 0.60</li>
</ul></div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><b font-weight="700">Manage your account 24/7.</b><br>
Remember you can access and manage your account anytime
by visiting
<a href="https://tdbank.com/">tdbank.com</a> or through the TD Bank app.
</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:120px;">
<a href="https://apps.apple.com/us/app/td-bank-us/id382107453" target="_blank">
<img alt="Download on the App Store" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="120">
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:120px;">
<a href="https://play.google.com/store/apps/details?id=com.tdbank&hl=en_US" target="_blank">
<img alt="Get it on Google Play" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/google-play-badge.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="120">
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#F3F3F3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#F3F3F3;background-color:#F3F3F3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#F3F3F3;background-color:#F3F3F3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 10px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:580px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><b font-weight="700">Something doesn't look right?</b><br>
If the information in this email looks suspicious to you, please call us at the number on the back
of your credit card. As always, you're covered with Visa's Zero Liability policy<sup>1</sup>, so you
are only responsible for purchases you have authorized.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><sup>1</sup>Visa's Zero Liability policy covers U.S. issued cards and does not apply to certain
commercial card transactions, or any transactions not processed by Visa. You must notify your
financial institution immediately of any unauthorized use. For specific restrictions, limitations
and other details, please visit <a href="http://www.tdbank.com/visa" target="_blank">www.tdbank.com/visa.</a></div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#F3F3F3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#F3F3F3;background-color:#F3F3F3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#F3F3F3;background-color:#F3F3F3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">This service email is to keep you informed about your TD Bank accounts. Please do not reply to this
email. To ensure delivery of service emails, add <a href="mailto:alerts@td.com">alerts@td.com</a> to
your address book.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">Your privacy is our priority. We'll never ask you to confirm your account number, PIN, password, or
personal information via email. Receive a suspicious email? Forward it to
<a href="mailto:Phishing@td.com">Phishing@td.com</a> or call
<b font-weight="700">1-800-893-8554</b>, and we'll check it out. Learn more at
<a href="https://tdbank.com/security">tdbank.com/security</a>.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:1;text-align:left;color:#000000;">For written correspondence: TD Bank Marketing Department P.O. Box 9540 Portland, Maine 04112-9540</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</div>
</body>
</html>
------=_Part_2707800_1920637874.1663456939464--
------=_Part_2707799_1179439123.1663456939464--

653
src/parse/testdata/td/wrong_sender.eml vendored Normal file
View File

@ -0,0 +1,653 @@
Delivered-To: me@cardholer.com
Received: by 2002:a59:c04d:0:b0:2de:4d02:b586 with SMTP id d13csp749280vqp;
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
X-Google-Smtp-Source: AMsMyM5HM0aO06eNSxS8GWwlUcqEZi0K+Ax8WfwHJfOJltq+r7SPe5q54KrxW/7UOoGkHGR2Je2e
X-Received: by 2002:a05:620a:4402:b0:6ce:a1e0:955c with SMTP id v2-20020a05620a440200b006cea1e0955cmr9093805qkp.656.1663456941219;
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1663456941; cv=none;
d=google.com; s=arc-20160816;
b=Ueq2MdCf5tYoroXuCKL9Jo7MFjzh82CfLq+wXKw034S+tJ639BNdS57K4yc9Q3gPeM
NGe8GAliFqbWZR7EF2M62y4U4JaYQTNVNGZc8vjoJaKq6PjKhI5a4hebUc9bYk5Rw6ZY
mrYAokA6BCsg6FHfXIybhbeS3wLOnVIUzo6Uk4Cc5ZG6j5bRxGo+d/exb2jJz0BmevrS
FHzux5vHGKYMDLIKobYD+YD/QzGoawsyDkz924h4uTWvChjboAZ1U3RjJMOh1KL5RedC
KrPZkztRkhKV2+AghskzXI679sDWsNPzgfpk72lLlEpkmDghgWGp9zDNtGArOX2/b5aW
LyTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
h=mime-version:subject:to:from:date:ump:dkim-signature:dkim-signature
:message-id;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=i958bn2iyWMVA1k9ZO9D8DmshZOfMVOomXOjoRNt9nz8A2oLs0k7C+7BJIQKbETE3k
vK1IicGbGr6WykX9/YP1vG/7cJN94jvYoTJ+ix/bHUlLDe33tu209H9pJLkv828VgvS2
vUI9TVYUW6y8tORE08wUBvrkFb1esLJds8N3+bDbVt8MM03hUOG/kwObVrkmxGI8BmNA
SpYGIljf+cEWs9e9JEsSh7H4D8kKTqFqIPStngJC/uaaZzVPkN+HaOPwEw6TNy8JLphK
niKaSXVMunttiLb49Ub/kkcnS7l3Eu//D88YwsthMfNOoXY7+TdPu95p2DmsZjSwD3dV
7K0w==
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
spf=pass (google.com: domain of alerts@someothercompany.com designates 142.205.124.102 as permitted sender) smtp.mailfrom=alerts@someothercompany.com;
dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=td.com
Return-Path: <alerts@someothercompany.com>
Received: from appmail.tdbank.ca ([142.205.124.102])
by mx.google.com with ESMTPS id ez3-20020a05622a4c8300b0035a89595940si2725573qtb.19.2022.09.17.16.22.21
for <me@cardholer.com>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Sat, 17 Sep 2022 16:22:21 -0700 (PDT)
Received-SPF: pass (google.com: domain of alerts@someothercompany.com designates 142.205.124.102 as permitted sender) client-ip=142.205.124.102;
Authentication-Results: mx.google.com;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
dkim=pass header.i=@td.com header.s=PRDIPT012018Jul header.b=rcA3ybo1;
spf=pass (google.com: domain of alerts@someothercompany.com designates 142.205.124.102 as permitted sender) smtp.mailfrom=alerts@someothercompany.com;
dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=td.com
Message-ID: <632656ad.050a0220.bcc6c.9e6fSMTPIN_ADDED_BROKEN@mx.google.com>
X-Google-Original-Message-ID: UROU3AOd4s3mx6k/aoBM0K/g2DldeudkY4tHZlHi44bzlocYs5YRehID/TYnRP0oI+ZkQQXSfEmBKYYFBP49rG2BZiIbRYy4cATmYYzhNgs/l+Md+32ozD3LdWiwlmAn
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=td.com; s=PRDIPT012018Jul;
h=date:from:to:message-id:subject:mime-version;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=rcA3ybo1V7xB4EHJWpjly1wAvZYAflqBVz+1Jq4RxqnIUZqsM5p2ElQd
KPwF1owk6bGOdat9eJFLWXu9afnwllbWh5BxBG5hnUGr/csxJFVN98CjD
NuEC8OzhfSP9Josgsj5O2kvtfYwEwdqu9tDw5Y36M/bAzQGMB8Ro/lzlV
VWdfIrGAqTP49Grjz/VwxX3WEtRY9NDOrNYakMOvSKGR52m6zF5N3hFWK
VryMbfV+GlkKcCJhApAEJrDuXnBGWclTShh0rST+gDNq4hvutHRrU9J5Z
f2juqutKAH85jU46G0H2QOJxzzgktXP8BLvZrvF/780v/qeLgoglFIipK
Q==;
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=td.com; s=PRDIPT012018Jul;
h=date:from:to:message-id:subject:mime-version;
bh=oFN6vjCojpo6AbLcaJx7rG6QgXXr+dTMTu+edPblYwg=;
b=rcA3ybo1V7xB4EHJWpjly1wAvZYAflqBVz+1Jq4RxqnIUZqsM5p2ElQd
KPwF1owk6bGOdat9eJFLWXu9afnwllbWh5BxBG5hnUGr/csxJFVN98CjD
NuEC8OzhfSP9Josgsj5O2kvtfYwEwdqu9tDw5Y36M/bAzQGMB8Ro/lzlV
VWdfIrGAqTP49Grjz/VwxX3WEtRY9NDOrNYakMOvSKGR52m6zF5N3hFWK
VryMbfV+GlkKcCJhApAEJrDuXnBGWclTShh0rST+gDNq4hvutHRrU9J5Z
f2juqutKAH85jU46G0H2QOJxzzgktXP8BLvZrvF/780v/qeLgoglFIipK
Q==;
UMP: SOC_NE_US
Date: Sat, 17 Sep 2022 19:22:20 -0400 (EDT)
From: alerts@someothercompany.com
To: me@cardholer.com
Subject: Purchase Alert For Your TD Cash
credit card
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_2707799_1179439123.1663456939464"
X-RCIS-Action: ALLOW
------=_Part_2707799_1179439123.1663456939464
Content-Type: multipart/related;
boundary="----=_Part_2707800_1920637874.1663456939464"
------=_Part_2707800_1920637874.1663456939464
Content-Type: text/html;charset=UTF-8
Content-Transfer-Encoding: 7bit
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<title>
Purchase Alert For Your TD Cash
credit card
</title>
<!--[if !mso]><!-->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
#outlook a { padding:0; }
body { margin:0;padding:0;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%; }
table, td { border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt; }
img { border:0;height:auto;line-height:100%; outline:none;text-decoration:none;-ms-interpolation-mode:bicubic; }
p { display:block;margin:13px 0; }
</style>
<!--[if mso]>
<noscript>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
</noscript>
<![endif]-->
<!--[if lte mso 11]>
<style type="text/css">
.mj-outlook-group-fix { width:100% !important; }
</style>
<![endif]-->
<style type="text/css">
@media only screen and (min-width:480px) {
.mj-column-per-100 { width:100% !important; max-width: 100%; }
}
</style>
<style media="screen and (min-width:480px)">
.moz-text-html .mj-column-per-100 { width:100% !important; max-width: 100%; }
</style>
<style type="text/css">
[owa] .mj-column-per-100 { width:100% !important; max-width: 100%; }
</style>
<style type="text/css">
@media only screen and (max-width:480px) {
table.mj-full-width-mobile { width: 100% !important; }
td.mj-full-width-mobile { width: auto !important; }
}
</style>
</head>
<body style="word-spacing:normal;">
<div style>
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#f3f3f3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#f3f3f3;background-color:#f3f3f3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#f3f3f3;background-color:#f3f3f3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;padding-bottom:10px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:540px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:250px;">
<img alt="TD Bank, America's Most Convenient Bank" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/TDB_tag_cntr_RGB.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="250">
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#00B624" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#00B624;background-color:#00B624;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#00B624;background-color:#00B624;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px 20px 0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;padding-bottom:10px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;font-weight:700;line-height:1;text-align:left;color:#000000;">RE: TD Cash
credit card</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">A purchase was made on 2022-09-17, which
is greater than the pre-set threshold value for your card ending in
1234.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><ul style="margin: 0; margin-left: 25px; padding: 0">
<li>Merchant Name: PAYPAL *MARKETPLACE</li>
<li>Amount: 0.60</li>
</ul></div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
<!--[if mso | IE]><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:0px 20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><b font-weight="700">Manage your account 24/7.</b><br>
Remember you can access and manage your account anytime
by visiting
<a href="https://tdbank.com/">tdbank.com</a> or through the TD Bank app.
</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:120px;">
<a href="https://apps.apple.com/us/app/td-bank-us/id382107453" target="_blank">
<img alt="Download on the App Store" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="120">
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="border-collapse:collapse;border-spacing:0px;">
<tbody>
<tr>
<td style="width:120px;">
<a href="https://play.google.com/store/apps/details?id=com.tdbank&hl=en_US" target="_blank">
<img alt="Get it on Google Play" height="auto" src="https://www.feeds.td.com/ew/images/omni/dep/assets/google-play-badge.png" style="border:0;display:block;outline:none;text-decoration:none;height:auto;width:100%;font-size:13px;" width="120">
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#F3F3F3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#F3F3F3;background-color:#F3F3F3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#F3F3F3;background-color:#F3F3F3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:30px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#ffffff" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#ffffff;background-color:#ffffff;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#ffffff;background-color:#ffffff;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px 10px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:580px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><b font-weight="700">Something doesn't look right?</b><br>
If the information in this email looks suspicious to you, please call us at the number on the back
of your credit card. As always, you're covered with Visa's Zero Liability policy<sup>1</sup>, so you
are only responsible for purchases you have authorized.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;"><sup>1</sup>Visa's Zero Liability policy covers U.S. issued cards and does not apply to certain
commercial card transactions, or any transactions not processed by Visa. You must notify your
financial institution immediately of any unauthorized use. For specific restrictions, limitations
and other details, please visit <a href="http://www.tdbank.com/visa" target="_blank">www.tdbank.com/visa.</a></div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#F3F3F3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#F3F3F3;background-color:#F3F3F3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="background:#F3F3F3;background-color:#F3F3F3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix" style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation" style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">This service email is to keep you informed about your TD Bank accounts. Please do not reply to this
email. To ensure delivery of service emails, add <a href="mailto:alerts@someothercompany.com">alerts@someothercompany.com</a> to
your address book.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">Your privacy is our priority. We'll never ask you to confirm your account number, PIN, password, or
personal information via email. Receive a suspicious email? Forward it to
<a href="mailto:Phishing@td.com">Phishing@td.com</a> or call
<b font-weight="700">1-800-893-8554</b>, and we'll check it out. Learn more at
<a href="https://tdbank.com/security">tdbank.com/security</a>.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:Arial;font-size:13px;line-height:1;text-align:left;color:#000000;">For written correspondence: TD Bank Marketing Department P.O. Box 9540 Portland, Maine 04112-9540</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</div>
</body>
</html>
------=_Part_2707800_1920637874.1663456939464--
------=_Part_2707799_1179439123.1663456939464--
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">
<sup>1</sup>Visa's Zero Liability policy covers U.S. issued cards and does not apply
to
certain
commercial card transactions, or any transactions not processed by Visa. You must
notify
your
financial institution immediately of any unauthorized use. For specific restrictions,
limitations
and other details, please visit <a href="http://www.tdbank.com/visa"
target="_blank">www.tdbank.com/visa.</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" class="" style="width:600px;" width="600" bgcolor="#F3F3F3" ><tr><td style="line-height:0px;font-size:0px;mso-line-height-rule:exactly;"><![endif]-->
<div style="background:#F3F3F3;background-color:#F3F3F3;margin:0px auto;max-width:600px;">
<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation"
style="background:#F3F3F3;background-color:#F3F3F3;width:100%;">
<tbody>
<tr>
<td style="direction:ltr;font-size:0px;padding:20px;text-align:center;">
<!--[if mso | IE]><table role="presentation" border="0" cellpadding="0" cellspacing="0"><tr><td class="" style="vertical-align:top;width:560px;" ><![endif]-->
<div class="mj-column-per-100 mj-outlook-group-fix"
style="font-size:0px;text-align:left;direction:ltr;display:inline-block;vertical-align:top;width:100%;">
<table border="0" cellpadding="0" cellspacing="0" role="presentation"
style="vertical-align:top;" width="100%">
<tbody>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">
This service email is to keep you informed about your TD Bank accounts. Please do not
reply to this
email. To ensure delivery of service emails, add <a
href="mailto:alerts@someothercompany.com">alerts@someothercompany.com</a> to
your address book.</div>
</td>
</tr>
<tr>
<td align="left" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div
style="font-family:Arial;font-size:13px;line-height:16px;text-align:left;color:#000000;">
Your privacy is our priority. We'll never ask you to confirm your account number, PIN,
password, or
personal information via email. Receive a suspicious email? Forward it to
<a href="mailto:Phishing@td.com">Phishing@td.com</a> or call
<b font-weight="700">1-800-893-8554</b>, and we'll check it out. Learn more at
<a href="https://tdbank.com/security">tdbank.com/security</a>.
</div>
</td>
</tr>
<tr>
<div
style="font-family:Arial;font-size:13px;line-height:1;text-align:left;color:#000000;">
For written correspondence: TD Bank Marketing Department P.O. Box 9540 Portland, Maine
04112-9540</div>
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</td>
</tr>
</tbody>
</table>
</div>
<!--[if mso | IE]></td></tr></table><![endif]-->
</div>
</body>
</html>
------=_Part_2707800_1920637874.1663456939464--