Whisk the eggs, milk and salt until no streaks remain.
Melt the butter in a nonstick skillet over medium-low heat and cook the eggs as a thin sheet, folding it into 4 bread-size rectangles when softly set.
Lay 4 bread slices out and top each with ham, an egg rectangle, American cheese, Swiss cheese and another bread slice.
Spread the outsides with mayonnaise and cook the sandwiches in a clean skillet over medium-low heat for 3 to 4 minutes per side.
Remove each melt when both sides are evenly brown and the cheese has softened through the egg layer.