Tach!
Lass das lieber bleiben. Wenn ein böser Bot über Deine Seite rauscht und z.B. 1000 404er mit irgendwelchen Referrern produziert, dann haust Du auf einmal 1000 Mails raus. Dann dreht Dir Dein Provider den Hahn ab, bzw. der Server landet dann schnell auf Blacklists.
Der Einwand ist berechtigt. Zumindest, wenn man die Mails über fremde Infrastruktur versendet. Wenn man Herr über das eigene System ist, und die Mail nur intern in Postfächer kopiert wird, ist das nicht so tragisch. Allerdings will man auch da keine Unmenge an Mails sichten und löschen. Jede Mail ist Handarbeit. Und wenn mehrere Mails wegen derselben Ursache eintrudeln, wird es irgendwann langweilig.
Statt Mails zu senden eine Textdatei zu erweitern, scheint da die bessere Idee zu sein. Wenn das Format eines ist, dass man zum Beispiel in Excel einlesen kann, kann man nach Quelle sortieren und die gleichartigen Zeilen recht einfach löschen.
Bei Textdateien im Multiuser-Betrieb muss man aber konkurrierende Zugriffe beachten. Wenn zwei Vorgänge die Datei zur selben Zeit lesen, haben beide denselben Text im Puffer. Jeder hängt aber eigene Informationen an, und wer zuletzt schreibt, überschreibt die Änderungen des anderen.
file_put_contents() mit dem Flag FILE_APPEND sollte die Angelegenheit regeln. Man übergibt PHP nur den anzuhängenden Teil, und muss nicht ein Einzelschritten öffnen, lesen, anhängen und zurückschreiben.
Eine Datenbank zu verwenden und neue Einträge nur zu schreiben, wenn die Quelle noch nicht vorhanden ist (Unique Key auf die Quelle legen, einfach Insert, und Fehler wegen Unique Key Contraints ignorieren), wäre auch eine Alternative.
dedlfix.