Habe bisher selbst nicht mit der Verbindung SMTP und PHP beschäftigt, aber rein von der Gestaltung der Objekte würde ich eine Klasse Mail verwenden, die Standardfunktionen, wie senden, setzen von Headern, Content, etc beinhaltet - Diese könnte man dann durch eine fiktive Klasse SMPT vererben. Dieses Kindobjekt bekommt im Constructor oder in einer weiteren Methode diverse Verbinungsparameter und Optionen mitgeteilt. Über die Standardfunktionen kann dann die Mail wie gehabt konstruiert werden und dann statt über die Standardfunktion in PHP über das SMTP gesendet werden. Eine weitere Möglichkeit wäre eine abstrakte Klasse Mail, die man für [phpf]mail[/phpf] in eine Klasse PHPMail vererbt, und für die SMTP-Schnittstelle eine Klasse SMTPMail benutzt, die die Standardfunktionen von Mail erbt.
Da POP3 / IMAP einen anderen Sinn als das Senden von Mails haben - Um genauer zu sein nämlich das Verarbeiten von Mails würde ich das anderweitig abkapseln in zB einer fiktiven Klasse PostBin, die man dann an jeweils POP3PostBin und IMAPPostBin vererben könnte. Die abstrakten Klassen bringen die gemeinsamen Funktionalitäten mit, die Kindklassen dann die Schnittstellen.