Erwägungen:
1.
Am 21. Juni 2019 wurde der Konkubinatspartnerin des Beschwerdeführers in der gegen ihn gerichteten Betreibung Nr. xxx des Betreibungsamts Pfannenstiel für den Betrag von Fr. 8'266.55 nebst Zins der Zahlungsbefehl zugestellt (Angabe des Forderungsgrunds: Beteiligung des anderen Elternteils an der Zahnspange von C._). Am 2. Juli 2019 (Postaufgabe) erhob der Beschwerdeführer Rechtsvorschlag. Mit Verfügung vom 3. Juli 2019 hielt das Betreibungsamt fest, der Rechtsvorschlag sei verspätet erfolgt.
Dagegen erhob der Beschwerdeführer am 10. Juli 2019 Beschwerde beim Bezirksgericht Meilen. Mit Urteil vom 16. September 2019 wies das Bezirksgericht die Beschwerde ab.
Dagegen erhob der Beschwerdeführer am 26. September 2019 Beschwerde beim Obergericht des Kantons Zürich. Mit Beschluss vom 12. November 2019 trat das Obergericht auf die Beschwerde nicht ein.
Gegen diesen Beschluss hat der Beschwerdeführer am 22. November 2019 Beschwerde an das Bundesgericht erhoben.
2.
Gegen den angefochtenen Entscheid steht die Beschwerde in Zivilsachen zur Verfügung (Art. 72 Abs. 2 lit. a, Art. 74 Abs. 2 lit. c, Art. 75, Art. 90 BGG).
Nach <ref-law> ist in der Beschwerdebegründung in ge-drängter Form darzulegen, inwiefern der angefochtene Akt Recht verletzt. Die beschwerdeführende Partei hat in gezielter Auseinandersetzung mit den für das Ergebnis des angefochtenen Entscheides massgeblichen Erwägungen aufzuzeigen, welche Rechte bzw. Rechtsnormen die Vorinstanz verletzt haben soll (<ref-ruling> E. 2 S. 88 f.; <ref-ruling> E. 2 S. 116).
3.
Das Obergericht ist auf die Beschwerde mangels genügender Begründung nicht eingetreten. Zudem hat es erwogen, dass sie abzuweisen wäre, wenn auf sie einzutreten wäre. Der Bestand bzw. die Höhe der Forderung könne nicht im betreibungsrechtlichen Beschwerdeverfahren bestritten werden. Formelle Mängel lägen nicht vor. Das Betreibungsamt sei nicht verpflichtet gewesen, einen Beleg für die in Betreibung gesetzte Forderung zu verlangen, und die Betreibung sei auch nicht rechtsmissbräuchlich.
4.
Vor Bundesgericht äussert sich der Beschwerdeführer mit keinem Wort dazu, dass er seine Beschwerde an das Obergericht ungenügend begründet hat. Er bestreitet auch gar nicht mehr, den Rechtsvorschlag verspätet erhoben zu haben. Er bezweifelt allerdings nach wie vor den Bestand der in Betreibung gesetzten Forderung, ohne sich damit auseinanderzusetzen, dass dies nicht Thema des Beschwerdeverfahrens nach <ref-law> ist. Entgegen dem, was sich der Beschwerdeführer vorzustellen scheint, ist auch das Bundesgericht im Beschwerdeverfahren nach <ref-law> i.V.m. <ref-law> nicht zuständig, den Bestand der Forderung bzw. die gesamte Sachlage zu beurteilen. Soweit er dem Betreibungsamt nach wie vor vorwirft, nicht von sich aus Belege verlangt zu haben, fehlt jegliche Auseinandersetzung mit den diesbezüglichen obergerichtlichen Erwägungen. Soweit er sich von der Gläubigerin Auskunft über die Forderung wünscht, ist er immerhin darauf hinzuweisen, dass er jederzeit vom Betreibungsamt verlangen kann, die Gläubigerin aufzufordern, die Beweismittel für ihre Forderung beim Betreibungsamt zur Einsicht vorzulegen (<ref-law>). Dass ihm die Gläubigerin mit der Betreibung Schaden zufügen wolle, bleibt eine unbelegte Behauptung.
Die Beschwerde enthält demnach offensichtlich keine hinreichende Begründung. Auf sie ist im vereinfachten Verfahren durch das präsidierende Mitglied der Abteilung nicht einzutreten (<ref-law>).
5.
Bei diesem Ausgang des Verfahrens trägt der Beschwerdeführer die Gerichtskosten (<ref-law>).

Demnach erkennt das präsidierende Mitglied:
1.
Auf die Beschwerde wird nicht eingetreten.
2.
Die Gerichtskosten von Fr. 500.-- werden dem Beschwerdeführer auferlegt.
3.
Dieses Urteil wird den Verfahrensbeteiligten und dem Obergericht des Kantons Zürich, II. Zivilkammer als obere kantonale Aufsichtsbehörde über Schuldbetreibung und Konkurs, schriftlich mitgeteilt.
Lausanne, 29. November 2019
Im Namen der II. zivilrechtlichen Abteilung
des Schweizerischen Bundesgerichts
Das präsidierende Mitglied: Escher
Der Gerichtsschreiber: Zingg