Für Deinen Einsatzzweck würde ich von einem ENC28J60 abraten. Bisher kenne ich keine Lib, die
TCP vernünftig umsetzt. Vor allem wenn es um einen TCP-Stream mit mehreren Paketen geht. Die Libs die ich kenne, können eine TCP-Verbindung aufbauen, ein Paket senden und gut. Beim Empfangen ebenso. Das klappt z.B. bei HTTP recht gut, solange nicht mehr Daten transportiert werden (egal in welche Richtung), als in ein Paket passen. Bei einer default MTU von 1500 sind das knapp 1.4KB. Mehrere Pakete erhöhen die Komplexität, da plötzlich Sequenznummern und ähnliches eine Rolle spielen.
Da Du aber
SMTP (Mail senden) spechen willst, müssen immer mehrere Pakete übertragen werden, da SMTP eine Art "Frage-Antwort" Spiel zwischen Client und Server ist. Wenn Du eh in Hongkong bestellen willst, pack lieber noch 4 Euro drauf und nimm ein
Shield mit W5100 Chip. Dort bildet der Chip die Protokolle TCP und UDP intern ab und Du kannst Dich auf die darüber liegenden Protokollschichten (siehe
Wikipedia) kümmern.
Außerdem hast Du dann mit der Arduino IDE immer eine aktuelle Ethernet-Lib, die zur IDE passt, da sie Bestandteil davon ist.
Ein weiterer Vorteil ist, das Du mehr Speicher auf dem Arduino zur Verfügung hast, da die W5100 Lib deutlich Resourcen schonender ist, als die ENC28J60 Lib.
Mario.