Faits :
A.
Le 24 août 2015, A._ a déposé une plainte pénale et administrative, qu'il a complétée le 19 septembre 2015, à l'encontre de B._, agent de police ayant enquêté sur différentes affaires le concernant (notamment sur un accident de cheval subi par C._, employée de A._). Dans un courrier adressé à la Direction de la sécurité et de la justice fribourgeoise, il a critiqué le travail et l'attitude de l'agent de police dans le cadre de ces procédures.
B._ a déposé plainte pénale, le 23 novembre 2015, à l'encontre de A._ pour injure, atteinte à l'honneur et tentative de contrainte.
B.
Par ordonnance pénale du 11 janvier 2018, le ministère public a reconnu A._ coupable de diffamation, pour avoir prétendu que B._ aurait exercé des pressions lors de l'audition du témoin C._. Il a condamné A._ à une peine pécuniaire de 10 jours-amende à 150 fr. le jour, avec sursis pendant 3 ans, peine complémentaire à celle ordonnée le 17 juin 2016 par la Juge de police de la Sarine, ainsi qu'à une amende de 300 francs. Le ministère public a astreint A._ au versement d'une indemnité de 750 fr. en faveur de B._ en application de l'art. 433 CPP.
Le même jour, le ministère public a rendu une ordonnance de classement en faveur de A._ concernant les chefs de prévention d'injure, d'atteinte à l'honneur (pour les faits dénoncés en sus des pressions sur C._) et de tentative de contrainte.
C.
A la suite de l'opposition formée par A._ contre l'ordonnance pénale précitée, le Juge de police de la Glâne a cité les parties à comparaître à son audience du 19 juin 2018. Par courrier daté du 11 juin 2018, reçu au greffe de l'autorité de première instance le 19 juin 2018, A._ a indiqué qu'il ne pouvait pas se déplacer à l'audience pour des raisons financières, demandant au juge de police de l'excuser pour son absence.
Par jugement par défaut du 29 juin 2018, le juge de police a reconnu A._ coupable de diffamation, l'a condamné à une peine pécuniaire de 8 jours-amende à 50 fr. le jour, avec sursis pendant 3 ans, peine complémentaire à celle prononcée le 17 juin 2016 par la Juge de police de la Sarine, ainsi qu'au paiement d'une amende de 100 francs. Par ailleurs, il a condamné A._ au paiement de 500 fr. en faveur de B._ à titre de réparation du tort moral subi et un montant de 3'033 fr. 20 pour les dépenses occasionnées par la procédure. Les frais de la procédure ont été mis à la charge de A._.
D.
A._ a formé appel contre le jugement de première instance.
Par ordonnance présidentielle de la cour d'appel pénal du Tribunal cantonal fribourgeois du 7 septembre 2018, la requête d'assistance judiciaire et de désignation d'un défenseur d'office de A._ a été rejetée.
Le 9 octobre 2018, la direction de la procédure a engagé la procédure écrite et imparti à A._ un délai échéant au 30 octobre 2018 pour déposer un mémoire d'appel motivé. Par mémoire du 29 octobre 2018, A._ a conclu principalement à ce que le jugement attaqué soit annulé avec suite de frais et dépens. Subsidiairement, pour le cas où le jugement était maintenu sur le fond, il a contesté les montants de l'amende, du tort moral et des indemnités.
Par arrêt du 28 mars 2019, la cour cantonale a rejeté l'appel formé par A._, dans la mesure de sa recevabilité.
E.
A._ forme un recours auprès du Tribunal fédéral contre l'arrêt cantonal et conclut à "constater l'arbitraire et la violation de l'art. 6 CEDH", à l'octroi de l'assistance judiciaire pour les procédures de première et deuxième instance, à l'annulation de la décision entreprise et au renvoi de la cause au Tribunal cantonal pour nouveau jugement. Il sollicite en outre l'assistance judiciaire pour la procédure fédérale.
Invités à se déterminer sur le mémoire de recours, la cour cantonale a indiqué ne pas avoir d'observation à formuler et le ministère public ne s'est pas déterminé dans le délai imparti.

Considérant en droit :
1.
Le recourant conteste avoir fait défaut et reproche à la cour cantonale de ne pas avoir traité ce grief. En cela, il invoque une violation de son droit d'être entendu. Par ailleurs, il se prévaut de son droit d'être jugé en contradictoire et invoque une violation de l'art. 6 CEDH.
1.1.
1.1.1. Selon la jurisprudence, l'autorité qui ne traite pas des conclusions prises devant elle dans les formes et délais prescrits, motivées de façon suffisante et pertinentes pour l'issue du litige, alors qu'elle devrait s'en saisir, commet un déni de justice formel proscrit par l'art. 29 al. 1 Cst. (<ref-ruling> consid. 4.2 p. 157; <ref-ruling> consid. 2.1 p. 9; cf. également arrêt 6B_1444/2017 du 25 juin 2018 consid. 2.2).
1.1.2. L'art. 366 CPP règle les conditions auxquelles la procédure par défaut peut être engagée. Le prévenu doit notamment avoir eu suffisamment l'occasion de s'exprimer auparavant sur les faits qui lui sont reprochés et les preuves réunies doivent permettre de rendre un jugement en son absence (al. 4).
Une fois le jugement par défaut notifié, le condamné a la possibilité soit de demander un nouveau jugement, aux conditions de l'art. 368 CPP, soit de faire appel, soit de faire les deux (art. 371 al. 1 CPP). L'appel permet notamment de contester l'application de l'art. 366 CPP, tandis que la demande de nouveau jugement porte sur la réalisation des conditions de l'art. 368 CPP (arrêts 6B_203/2016 du 14 décembre 2016 consid. 1.1; 6B_1277/2015 du 29 juillet 2016 consid. 3.3.1 et la référence citée).
1.1.3. Selon la jurisprudence de la Cour européenne des droits de l'Homme, l'art. 6 CEDH garantit à l'accusé le droit d'être jugé en sa présence. Il s'ensuit qu'une procédure par défaut n'est compatible avec cette disposition que si le condamné a la possibilité de demander qu'une juridiction statue à nouveau, après l'avoir entendu, sur le bien-fondé de l'accusation, en fait comme en droit (arrêt CourEDH Sejdovic c. Italie du 1er mars 2006, Recueil CourEDH 2006-II p. 201 § 81 s. et les arrêts cités). Ce principe supporte cependant quelques atténuations. Ainsi, la Cour européenne admet que la CEDH n'empêche pas une personne de renoncer de son plein gré aux garanties d'un procès équitable de manière expresse ou tacite, en particulier à son droit d'être jugé en contradictoire. Elle exige seulement que la renonciation au droit de participer à l'audience se trouve établie de manière non équivoque et qu'elle ait été entourée du minimum de garanties correspondant à sa gravité (arrêt CourEDH Sejdovic c. Italie § 86 et les arrêts cités). Enfin, sous réserve que les sanctions procédurales prévues ne soient pas disproportionnées et que l'accusé ne soit pas privé du droit d'être représenté par un avocat, la Cour européenne juge que le législateur national doit pouvoir décourager les absences injustifiées aux audiences (arrêt CourEDH Sejdovic c. Italie § 92 et les arrêts cités). Dès lors, la Cour européenne admet qu'une personne condamnée par défaut puisse se voir refuser la possibilité d'être jugée en contradictoire si les trois conditions cumulatives suivantes sont remplies: premièrement, il est établi que cette personne avait reçu sa citation à comparaître; deuxièmement, elle n'a pas été privée de son droit à l'assistance d'un avocat dans la procédure par défaut; et, troisièmement, il est démontré qu'elle avait renoncé de manière non équivoque à comparaître ou qu'elle avait cherché à se soustraire à la justice (cf. arrêts CourEDH Medenica c. Suisse du 14 juin 2001, Recueil CourEDH 2001-VI p. 81 § 55 ss et Sejdovic c. Italie § 105 ss a contrario). A propos de cette dernière condition, la Cour européenne a précisé qu'il ne devait pas incomber à l'accusé de prouver qu'il n'entendait pas se dérober à la justice ou que son absence s'expliquait par un cas de force majeure, mais qu'il était loisible aux autorités nationales d'évaluer si les excuses fournies par l'accusé pour justifier son absence étaient valables ou si les éléments versés au dossier permettaient de conclure que l'absence de l'accusé aux débats était indépendante de sa volonté (arrêt CourEDH Sejdovic c. Italie § 88 et les arrêts cités; cf. aussi arrêts 6B_946/2017 du 8 mars 2018 consid. 3.1; 6B_203/2016 du 14 décembre 2016 consid. 2.2.2; 6B_1277/2015 du 29 juillet 2016 consid. 3.2).
1.2. Dans sa déclaration d'appel, le recourant a contesté avoir fait défaut, relevant qu'il avait informé le tribunal - par courriels des 12 et 13 juin 2018 et par courrier recommandé du 11 juin 2018 - du fait qu'il habitait en France et n'avait pas les moyens de se rendre à l'audience. Il y a précisé qu'il n'avait jamais pu être confronté de manière contradictoire et avec l'assistance d'un conseil aux déclarations de C._, contrairement à l'art. 6 CEDH (déclaration d'appel du 24 juillet 2018, pce 41). Dans son mémoire d'appel motivé, le recourant a insisté sur le fait qu'il n'avait pas fait défaut et que la procédure n'était pas conforme à l'art. 6 CEDH (mémoire d'appel motivé du 30 octobre 2018, pce 68).
1.3. La cour cantonale a relevé que le recourant n'avait pas requis de relief dans le délai, de sorte qu'il ne pouvait plus se prévaloir de n'avoir pas fait défaut au stade de l'appel. Elle a déclaré le grief y relatif irrecevable.
1.4. Ce faisant, la cour cantonale a omis de traiter l'appel sous l'angle des art. 366 al. 4 CPP et 6 CEDH. Le recourant, agissant en personne, avait, d'une part, expressément soulevé la problématique au regard de l'art. 6 CEDH. D'autre part, il s'était plaint de l'absence d'assistance d'un avocat et du fait qu'il n'avait pas eu l'occasion de s'exprimer en contradictoire sur les déclarations de C._, lesquelles constituaient les preuves principales de la procédure. En cela, il contestait avoir eu l'occasion de s'exprimer suffisamment et prétendait que les preuves réunies ne permettaient pas de rendre un jugement en son absence (cf. art. 366 al. 4 CPP). Dans la mesure où l'appel permet précisément de contester l'application de l'art. 366 CPP, la cour cantonale a violé le droit d'être entendu du recourant en ne traitant pas son grief sous cet angle, ainsi que sous l'angle de l'art. 6 CEDH.
Pour ce motif, le recours doit être admis sur ce point et la cause renvoyée à la cour cantonale pour qu'elle traite les griefs soulevés par le recourant en lien avec la procédure par défaut.
2.
Le recourant reproche à la cour cantonale d'avoir considéré qu'il n'avait pas attaqué la décision de première instance sur le fond et invoque une violation de l'art. 6 CEDH en ce sens qu'il n'a pas pu se défendre de manière adéquate et n'a pas eu le droit à un jugement rendu en contradictoire.
Il conteste s'être rendu coupable de diffamation. Il invoque l'arbitraire dans l'établissement des faits à cet égard et reproche aux autorités précédentes de ne pas lui avoir laissé la possibilité d'apporter la preuve de la vérité. En particulier, il relève n'avoir pas pu être confronté aux déclarations de C._, qui étaient décisives pour sa condamnation.
2.1. En vertu de l'art. 399 al. 3 let. a CPP, la déclaration d'appel doit indiquer si le jugement est attaqué dans son ensemble ou seulement sur certaines parties. Dans ce dernier cas, l'appelant est tenu de mentionner, dans sa déclaration d'appel, de manière définitive, sur quelles parties porte l'appel. L'art. 399 al. 4 CPP énumère, à ses lettres a à g, les parties du jugement qui peuvent être attaquées séparément. L'appel peut ainsi notamment porter sur la question de la culpabilité, le cas échéant en rapport avec chacun des actes (let. a), sur la quotité de la peine (let. b), sur les mesures qui ont été ordonnées (let. c), les prétentions civiles (let. d) ou les frais, indemnités et réparation du tort moral (let. f). Selon l'art. 404 al. 1 CPP, la juridiction d'appel n'examine que les points attaqués du jugement de première instance. Elle revoit ces points avec un plein pouvoir d'examen (art. 398 al. 2 CPP), sans être liée par les motifs invoqués par les parties ni par leurs conclusions (sauf en matière civile; art. 391 al. 1 CPP; cf. sur ces dispositions <ref-ruling> consid. 1.1 p. 384). Après que l'objet de l'appel a été fixé dans la déclaration d'appel, la portée de celui-ci ne peut plus être élargie (arrêts 6B_125/2019 du 5 mars 2019 consid. 1.1; 6B_1160/2017 du 17 avril 2018 consid. 1.1 publié in SJ 2019 I 64).
La limitation de l'appel doit être univoque (cf. arrêts 6B_492/2018 du 13 novembre 2018 consid. 2.3; 6B_349/2016 du 13 décembre 2016 consid. 2.3; cf. également en ce sens, arrêt 6B_827/2017 du 25 janvier 2018 consid. 1.3). Si l'appel n'est pas expressément limité à certains points ou s'il y a un doute à cet égard, il y a lieu de considérer que le jugement est attaqué dans son ensemble (arrêt 6B_548/2011 du 14 mai 2012 consid. 3; SCHMID/JOSITSCH, Handbuch des schweizerischen Strafprozessrechts, 3ème éd. 2017, n° 1547).
2.2. La cour cantonale a constaté que, dans sa déclaration d'appel, le recourant avait expressément indiqué contester formellement " les montants de l'amende, du tort moral et des indemnités " (en gras dans le document). Elle en a déduit qu'il avait clairement renoncé à appeler de sa condamnation pour diffamation en application de l'art. 399 al. 4 CPP. Aussi, la cour cantonale a considéré que l'extension des conclusions dans le mémoire d'appel motivé, portant nouvellement sur la question de la culpabilité, était irrecevable. La condamnation pour diffamation était désormais définitive.
2.3. Ce raisonnement ne saurait être suivi.
S'il ressort effectivement de la déclaration d'appel que le recourant, agissant en personne, a contesté l'amende, le tort moral et les indemnités, il n'est aucunement fait mention d'une limitation expresse de l'appel à ces points. Au contraire, dans ce même acte, le recourant a invoqué (en caractère gras) la violation de l'art. 6 CEDH et critiqué le fait qu'il n'avait pas pu être confronté aux déclarations de C._. Dans son mémoire d'appel motivé, le recourant a longuement contesté sa condamnation sur le fond, rappelant que les déclarations de C._ démontraient sa bonne foi.
Or le recourant a été reconnu coupable de diffamation sans être admis à apporter la preuve de sa bonne foi (cf. jugement de première instance consid. 2 p. 14; s'agissant des preuves libératoires cf. art. 173 ch. 2 CP). Compte tenu des critiques figurant dans sa déclaration d'appel et leur lien avec les griefs de fond du mémoire motivé, il ne pouvait être retenu que le recourant avait, sans équivoque, limité son appel. Au contraire, la cour cantonale ne pouvait que considérer que le recourant avait appelé du jugement dans son ensemble et notamment s'agissant de sa condamnation pour diffamation. En considérant qu'il avait renoncé à appeler de sa condamnation pour diffamation et en refusant d'entrer en matière sur le fond, la cour cantonale a violé le droit fédéral ainsi que le droit d'être entendu du recourant (cf. arrêt 6B_1167/2015 du 25 août 2016 consid. 1.3 publié in Pra 2016 [91] 845).
La présente affaire se distingue de celle à laquelle se réfère la cour cantonale, dans laquelle le recourant avait expressément limité son appel à deux chiffres du dispositif du jugement de première instance (arrêt 6B_1160/2017 du 17 avril 2018 consid. 1.2 publié in SJ 2019 I 64). Pour le surplus, la cour cantonale cite l'arrêt 6B_548/2011 pour interpréter le mémoire d'appel comme étant expressément limité à certaines parties du jugement au sens de l'art. 399 al. 4 CPP. Or, à teneur de cet arrêt, la volonté du législateur est de permettre à la juridiction d'appel d'exercer un très large contrôle sur la cause qui lui est soumise. Il y est retenu que l'autorité cantonale a violé le droit fédéral en refusant d'examiner une circonstance atténuante alors même que la quotité de la peine était contestée (arrêt 6B_548/2011 du 14 mai 2012 consid. 3). La motivation cantonale ne saurait donc trouver son fondement dans les arrêts précités.
Au vu de ce qui précède, le recours doit être admis sur ce point également, l'arrêt cantonal doit être annulé et la cause renvoyée à la cour cantonale afin qu'elle examine l'appel du recourant sous l'angle de la culpabilité, une fois réglée la question de la procédure par défaut. Dans cette mesure, il lui incombera d'examiner la pertinence d'une procédure écrite (cf. art. 406 CPP; arrêts 6B_606/2018 du 12 juillet 2019 consid. 3.5, publié in Pra 2019 [115] 1131; 6B_260/2016 du 25 mai 2016 consid. 1). Dès lors que la peine est liée à la condamnation, il appartiendra, cas échéant, à la cour cantonale de fixer celle-ci au moment du jugement (cf. art. 34 al. 2 CP).
Compte tenu du sort du recours, il n'y a pas lieu d'examiner plus avant les autres griefs du recourant (notamment: montant de l'indemnité octroyée à l'intimé; assistance judiciaire).
3.
Il résulte de ce qui précède que le recours doit être admis, l'arrêt entrepris doit être annulé et la cause renvoyée à la cour cantonale pour nouvelle décision. Vu l'issue du recours, il ne sera pas perçu de frais (art. 66 al. 1 LTF). Le recourant, qui agit en personne et ne prétend pas avoir supporté de frais pour la défense de ses intérêts, ne peut prétendre à des dépens (cf. art. 68 LTF). Compte tenu de la nature des griefs soulevés et du fait que l'intimé 2 n'a pas été invité à se déterminer, il ne supportera pas de frais judiciaires (art. 66 al. 1 LTF) et ne saurait prétendre à des dépens (art. 68 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis, l'arrêt attaqué est annulé et la cause renvoyée à la cour cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires ni alloué de dépens.
3.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal de l'Etat de Fribourg, Cour d'appel pénal.
Lausanne, le 27 novembre 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke