Here is one way. It recognizes adjacent entries with the same first part as needing to be combined into a single record. It does not combine non-adjacent entries.
list = {{"a", 1}, {"b", 2}, {"b", 3}, {"c", 4}, {"b", 9}};
splitList = SplitBy[list, #[[1]] &]
(* {{{"a",1}},{{"b",2},{"b",3}},{{"c",4}},{{"b",9}}} *)
{#[[1, 1]], Total[#[[All, 2]]]} & /@ splitList
(* {{"a",1},{"b",5},{"c",4},{"b",9}} *)
But if you want a total for each email that appears in the list, you can use GatherBy:
gatheredList = GatherBy[list, #[[1]] &]
(* {{{"a",1}},{{"b",2},{"b",3},{"b",9}},{{"c",4}}} *)
{#[[1, 1]], Total[#[[All, 2]]]} & /@ gatheredList
(* {{"a",1},{"b",14},{"c",4}} *)