Faits :
A.
Par jugement du 19 octobre 2020, le Tribunal de police de l'arrondissement de l'Est vaudois a reconnu A._ coupable d'utilisation abusive d'une installation de télécommunication et de contrainte (I), l'a condamné à une peine pécuniaire de 120 jours-amende à 100 fr. l'unité (II), ainsi qu'à une amende de 4'000 fr., la peine privative de substitution en cas de non-paiement fautif de l'amende étant fixée à 40 jours (III), et a suspendu l'exécution de la peine pécuniaire (cf. ch. II) en fixant un délai d'épreuve de trois ans au condamné (IV). Il a également subordonné le maintien du sursis au respect par ce dernier de l'interdiction de s'approcher à moins de 100 m de B._, de son lieu de domicile et de son lieu de travail, de l'interdiction de prendre contact avec celle-ci de quelque manière que ce soit (messagerie, courriel, réseaux sociaux notamment) et de l'interdiction de l'évoquer de manière directe ou indirecte sur les réseaux sociaux ou tout autre site internet (V). Enfin, il a condamné A._ au paiement immédiat en faveur de B._ des montants de 3'000 fr. à titre de tort moral et de 9'634 fr. 85 à titre d'indemnité à forme de l'<ref-law>, la prénommée étant renvoyée à agir par la voie civile pour le surplus (VI), et a mis les frais de justice à sa charge (VII).
B.
B.a. Par jugement du 29 mars 2021, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel interjeté par A._ contre le jugement du 19 octobre 2020, qu'elle a confirmé, condamnant en outre le prénommé à verser à B._ le montant de 1'757 fr. 30 à titre d'indemnité pour les dépenses occasionnées par la procédure d'appel.
B.b. La cour cantonale a retenu les faits principaux suivants:
A U._, entre le 9 octobre 2018 et le 24 juin 2019, après avoir été éconduit par B._, A._ s'est livré à un harcèlement obsessionnel à son endroit dans le but de la conquérir. Il lui a notamment adressé de multiples messages insistants par divers canaux, à savoir par SMS, par WhatsApp, par messagerie électronique ainsi que par les réseaux sociaux Facebook et Linkedin au moyen de différents profils et adresses électroniques, allant même jusqu'à la contacter à plusieurs reprises sur sa messagerie professionnelle au mois d'avril 2019. Il a agi de la sorte malgré plusieurs messages de B._ lui demandant de ne plus la contacter, mais également en dépit de son absence de réponse, de la menace du dépôt d'une plainte pénale à son encontre et du fait qu'elle bloquait régulièrement les moyens de contact qu'il utilisait pour la joindre.
Au cours de la période précitée, A._ a étendu progressivement son comportement intrusif et oppressant en s'immisçant de différentes façons dans la vie professionnelle, familiale puis sociale de B._. Ainsi, le 30 octobre 2018, il n'a pas hésité à se rendre sur son lieu de travail pour déposer un bouquet de fleurs à son attention, alors qu'elle lui avait explicitement demandé de la laisser tranquille par message du 26 octobre 2018 notamment. Le 10 décembre 2018, il a adressé un premier courriel au père de B._ dont il avait obtenu l'adresse d'une façon indéterminée afin de lui demander la main de sa fille, avant de le relancer le 14 décembre 2018. En dépit du refus de l'intéressé et de sa demande de ne plus importuner sa famille, le prévenu lui a encore adressé deux courriels supplémentaires les 15 et 22 décembre 2018. Au mois de mai 2019, il a cherché à rejoindre une association dont faisait partie la plaignante, notamment dans le but de la revoir et de se rapprocher d'elle.
Enfin et bien qu'il eût reçu un mandat de comparution daté du 24 mai 2019 le convoquant à une audience en raison de la plainte pénale déposée à son encontre par B._, il a persisté, jusqu'au 24 juin 2019, à adresser plusieurs courriels à cette dernière mais également à son père, ainsi qu'à la responsable de l'association précitée qui avait refusé son admission. Au vu des circonstances, B._ a été obligée de modifier ses habitudes et de prendre diverses mesures pour ne plus être importunée. Elle ne se rendait ainsi plus dans certains endroits, ni à certains événements, par crainte de croiser le prévenu. Elle vérifiait également régulièrement si ce dernier la suivait dans la rue ou s'il ne se trouvait pas dans les lieux publics dans lesquels elle s'apprêtait à entrer. Elle a également coupé le contact avec plusieurs connaissances communes, afin que le prévenu ne pût pas l'atteindre d'une quelconque façon ou se renseigner à son sujet. Elle a d'autre part souffert de crises d'angoisses nécessitant un traitement anxiolytique prescrit par son médecin et son état psychique a affecté son activité professionnelle.
C.
A._ interjette un recours en matière pénale au Tribunal fédéral contre le jugement du 29 mars 2021. Il conclut principalement à sa réforme en ce sens qu'il soit libéré des chefs d'accusation d'utilisation abusive d'une installation de télécommunication et de contrainte, la plaignante étant renvoyée à agir par la voie civile, et qu'il lui soit alloué, à la charge de l'État, une indemnité de 20'000 fr. pour les dépenses occasionnées pour l'exercice de ses droits de procédure. A titre subsidiaire, il conclut à l'annulation du jugement entrepris et au renvoi de la cause à la cour cantonale pour nouvelle décision dans le sens des considérants. Il sollicite en outre l'octroi de l'effet suspensif.
D.
Par ordonnance du 23 juin 2021, la Présidente de la Cour de droit pénal a rejeté la requête d'effet suspensif.

Considérant en droit :
1.
1.1. Se référant aux art. 9, 325 et 344 CPP, le recourant se plaint d'une violation de la maxime d'accusation s'agissant de sa condamnation pour utilisation abusive d'une installation de télécommunication (<ref-law>). En effet, l'état de fait figurant dans l'ordonnance pénale, devenue acte d'accusation, ne permettrait pas de retenir qu'il aurait agi par méchanceté ou par espièglerie au sens de la disposition précitée, dans la mesure où il mentionnerait au contraire qu'il a agi dans le but de conquérir B._. La juridiction cantonale aurait en outre retenu à tort que l'intensité du comportement reproché remplissait les deux conditions subjectives précitées. Citant la doctrine (AUDE BICHOVSKY, in Commentaire romand, Code pénal, 2017, n° 25 ad <ref-law> et les références), il soutient que le pétitionnaire ou l'amoureux éconduit devrait, sauf circonstances particulières, échapper à une condamnation puisque, dans ces cas, la méchanceté ou l'espièglerie feraient défaut.
1.2. L'<ref-law> consacre la maxime d'accusation. Selon cette disposition, une infraction ne peut faire l'objet d'un jugement que si le ministère public a déposé auprès du tribunal compétent un acte d'accusation dirigé contre une personne déterminée sur la base de faits précisément décrits. En effet, le prévenu doit connaître exactement les faits qui lui sont imputés et les peines et mesures auxquelles il est exposé, afin qu'il puisse s'expliquer et préparer efficacement sa défense (<ref-ruling> consid. 2.2; <ref-ruling> consid. 3.4.1). Ce principe est concrétisé par les <ref-law> qui règlent la mise en accusation, en particulier le contenu strict de l'acte d'accusation. Selon l'<ref-law>, l'acte d'accusation désigne notamment: les actes reprochés au prévenu, le lieu, la date et l'heure de leur commission ainsi que leurs conséquences et le mode de procéder de l'auteur (let. f); les infractions réalisées et les dispositions légales applicables de l'avis du ministère public (let. g).
En d'autres termes, l'acte d'accusation doit contenir les faits qui, de l'avis du ministère public, correspondent à tous les éléments constitutifs de l'infraction reprochée au prévenu (arrêts 6B_38/2021 du 14 février 2022 consid. 2.1; 6B_215/2021 du 17 janvier 2022 consid. 3.1; 6B_1498/2020 du 29 novembre 2021 consid. 2.1, non publié in <ref-ruling>). Le tribunal est lié par l'état de fait décrit dans l'acte d'accusation (principe de l'immutabilité de l'acte d'accusation), mais peut s'écarter de l'appréciation juridique qu'en fait le ministère public (<ref-law>), à condition d'en informer les parties présentes et de les inviter à se prononcer (<ref-law>). Il peut également retenir dans son jugement des faits ou des circonstances complémentaires, lorsque ceux-ci sont secondaires et n'ont aucune influence sur l'appréciation juridique. En outre, selon la jurisprudence, la maxime d'accusation n'exige pas que l'acte d'accusation décrive, en droit, de manière précise l'ensemble des éléments déterminant l'aspect subjectif d'une infraction qui ne peut être qu'intentionnelle (<ref-ruling> consid. 3c; <ref-ruling> consid. 1d; arrêts 6B_38/2021 précité consid. 2.1; 6B_461/2018 du 24 janvier 2019 consid. 5.1).
1.3. En l'espèce, la juridiction précédente a considéré que l'état de fait figurant dans l'ordonnance pénale du 12 juin 2020, devenue acte d'accusation (cf. art. 356 al. 1, 2e phrase, CPP), comportait les éléments constitutifs des infractions reprochées au recourant, soit la contrainte (stalking) et la contravention à l'art. 179 septies CP, laquelle avait été retenue par le premier juge en application de l'<ref-law>. L'acte d'accusation faisait grief au prévenu d'avoir adopté un comportement intrusif et oppressant notamment en recourant aux moyens de communications actuels et en multipliant ses profils électroniques de manière à déjouer les mécanismes de blocage mis en place par la plaignante. L'intensité du comportement reproché au recourant convoquait à la fois la méchanceté et l'espièglerie, de sorte que ce mobile se confondait ou faisait double emploi avec l'acharnement mis en oeuvre par lui pour contacter la plaignante tel qu'il était écrit dans l'acte d'accusation. Autrement dit, l'abus saisissait le mobile légal, si bien que le premier juge pouvait retenir cette infraction supplémentaire en dépit du fait que l'acte d'accusation n'évoquait ni la méchanceté, ni l'espièglerie.
1.4. Quoi qu'en dise le recourant, on ne voit pas en quoi la juridiction précédente aurait outrepassé le pouvoir d'appréciation dont elle dispose, au regard de l'état de fait décrit dans l'acte d'accusation, en confirmant la condamnation pour utilisation abusive d'une installation de télécommunication. En tant qu'éléments subjectifs de l'infraction, la méchanceté ou l'espièglerie n'avaient pas nécessairement à faire l'objet d'une mention explicite ou d'une description particulière dans l'acte d'accusation (cf. consid. 1.2 supra). En outre, il n'est pas contesté que la cour cantonale s'est précisément fondée sur celui-ci pour retenir que le recourant avait adopté un comportement intrusif et oppressant en recourant aux moyens de communications actuels (multiples SMS, WhatsApp, courriels, messages Facebook et Linkedin) et en multipliant ses profils électroniques de manière à déjouer les mécanismes de blocage mis en place. Le grief tiré de la violation de la maxime d'accusation est dès lors mal fondé. En réalité, le point de savoir si l'intensité de ces actions résultait à la fois de la méchanceté et de l'espièglerie au sens de l'<ref-law> relève d'un examen matériel des éléments constitutifs de l'infraction et sera examiné dans le cadre du grief y relatif (cf. consid. 3.3 infra).
2.
2.1. Le recourant soutient que l'autorité précédente aurait établi les faits et apprécié les preuves de façon arbitraire, ce qui aurait conduit à la violation des art. 179septies et 181 CP.
2.2. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.3.1; <ref-ruling> consid. 1.1; <ref-ruling> consid. 2.3.1). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des constatations insoutenables (<ref-ruling> consid. 1.1; <ref-ruling> consid. 2.3 et les références citées).
Déterminer ce qu'une personne a su, voulu, envisagé ou accepté relève du contenu de la pensée, à savoir de faits "internes", qui en tant que tels (<ref-ruling> consid. 7.3.1; <ref-ruling> consid. 6.3; <ref-ruling> consid. 4.2.3), lient le Tribunal fédéral, à moins qu'ils n'aient été retenus de manière arbitraire, comme exposé précédemment.
2.3. Par son argumentation, le recourant entend d'une part démontrer qu'il n'avait pas conscience ni la volonté de causer les désagréments allégués par l'intimée, et d'autre part remettre en cause l'ampleur de ces derniers. Il fait en particulier grief aux juges cantonaux de n'avoir pas retranscrit dans sa totalité le message de l'intimée du 26 octobre 2018; le passage manquant ("PS je ne m'inquiète pas, car si tu faisais la moindre chose néfaste à mon égard, je ruinerai ta vie en quelques minutes. Le bébé t'emmerde") tendrait en effet à démontrer que l'intimée n'avait pas peur de lui et qu'il ne pouvait pas savoir que ses "envois" inquiétaient celle-ci au point de lui faire changer ses habitudes de vie. Le recourant reproche en outre à la juridiction cantonale de n'avoir pas tenu compte de ses déclarations constantes selon lesquelles il n'aurait agi que dans le but de conquérir l'intimée et n'aurait jamais eu l'intention de lui faire du mal. Il fait d'ailleurs valoir qu'il n'a plus contacté l'intimée après sa convocation devant le ministère public, soit depuis qu'il a eu connaissance des répercussions évoquées par l'intimée. Les déclarations du témoin C._, entendu en première instance, confirmeraient que le recourant n'avait pas connaissance de l'impact de son comportement sur la vie de l'intimée et ne s'en serait pas accommodé. Ensuite, le recourant soutient que l'intimée n'aurait pas été en mesure d'indiquer quelles étaient les connaissances communes avec lesquelles elle aurait dû couper les liens et qu'aucun élément au dossier ne permettrait d'attester ses dires. Le témoin précité aurait par ailleurs indiqué n'avoir jamais croisé la plaignante à la Paroisse D._. Enfin, le recourant remet en cause le fait que l'intimée a dû renoncer à s'investir dans l'association dans laquelle il n'a jamais été admis et reproche à la cour cantonale de n'avoir pas tenu compte du fait qu'il ne l'avait jamais suivie dans la rue, ni tenté de l'approcher et qu'elle n'avait jamais été confrontée physiquement à lui.
2.4. Une telle argumentation s'inscrit dans une discussion de type appellatoire, sur laquelle il n'y a pas lieu d'entrer en matière. En effet, le recourant y expose sa propre appréciation des circonstances en tirant des déductions de fait sur la base de quelques déclarations isolées du contexte général. Tel est le cas lorsqu'il se réfère au message de l'intimée du 26 octobre 2018 ou encore à l'extrait des déclarations de C._ par lesquelles ce témoin s'est limité à indiquer qu'il n'avait pas été informé du fait que l'intimée aurait demandé à un autre ami d'intervenir. Quant aux propres déclarations du recourant faites devant le ministère public puis devant le tribunal de police et enfin aux débats d'appel, elles ne permettent pas non plus de démontrer que les juges cantonaux auraient fait preuve d'arbitraire dans l'établissement des faits, en particulier en retenant que le recourant ne pouvait pas se prévaloir de son ignorance puisqu'il avait continué ses agissements en dépit de la menace d'une plainte pénale et même après avoir reçu le mandat de comparution à l'audience de conciliation devant le ministère public. Enfin, même si l'on admettait que le recourant n'avait pas une connaissance précise de l'ampleur de l'atteinte causée à l'intimée, on ne voit pas en quoi cela devrait conduire à sa libération des chefs d'accusation. S'agissant précisément des répercussions sur la vie de l'intimée (cf. let. B.b supra), les juges cantonaux ont fondé leurs constatations sur les déclarations faites par celle-ci, qu'ils ont jugées crédibles, convaincantes et qui étaient confirmées par les deux témoins entendus en première instance. A ce sujet également, les développements du recourant sont purement appellatoires et donc inadmissibles. En outre, le fait qu'il n'a pas suivi la plaignante dans la rue, ni ne l'a confrontée physiquement n'apparaît pas décisif, le recourant n'indiquant d'ailleurs pas en quoi cela le serait.
2.5. Au vu de ce qui précède, il n'y a pas lieu de tenir compte d'un état de fait qui divergerait de celui qui est contenu dans le jugement attaqué.
3.
3.1. Dans son grief de violation de l'<ref-law>, le recourant soutient d'abord que les juges cantonaux n'auraient pas précisé comment ils étaient arrivés à la conclusion qu'il avait agi avec l'intention d'importuner ou d'inquiéter l'intimée, respectivement qu'il avait agi par méchanceté ou espièglerie. Aussi la cour cantonale n'aurait-elle pas respecté les exigences de motivation découlant du droit d'être entendu, concrétisé aux art. 29 Cst. et 6 §1 CEDH.
Sur le fond, le recourant soutient qu'aucun élément au dossier ne permettrait de penser qu'il visait un autre but que celui d'exprimer ses sentiments et de conquérir la plaignante. En outre, l'utilisation qu'il a faite des installations de télécommunication ne serait pas abusive, dès lors que ses messages n'étaient pas anonymes - son identité ayant toujours été reconnaissable quand bien même il utilisait différents pseudonymes - et que leur quantité serait demeurée en deçà des exigences posées par la jurisprudence en lien avec la période considérée. Enfin, le contenu des messages en question ne permettrait pas de considérer que l'atteinte ait pu revêtir une gravité suffisante sur le plan qualitatif.
3.2.
3.2.1. Le droit d'être entendu, au sens invoqué par le recourant, impose à l'autorité le devoir de motiver sa décision afin que le justiciable puisse en saisir la portée et, le cas échéant, l'attaquer en connaissance de cause. Pour satisfaire à cette exigence, il suffit que le juge mentionne au moins brièvement les motifs qui l'ont guidé et sur lesquels il a fondé sa décision (<ref-ruling> consid. 5.3.4; <ref-ruling> consid. 1.3.1). Il n'a pas l'obligation d'exposer et de discuter tous les faits, moyens de preuve et griefs invoqués par les parties, mais peut au contraire se limiter à ceux qui, sans arbitraire, peuvent être tenus pour pertinents (<ref-ruling> consid. 2.4; <ref-ruling> consid. 4.2).
3.2.2. En l'occurrence, les juges cantonaux ont constaté que le prévenu avait déclaré sa flamme à la plaignante le 31 août 2018 et avait été éconduit le 3 septembre 2018. Or il n'avait eu de cesse d'importuner la plaignante par l'envoi systématique de messages au contenu dérangeant, voire inquiétant, même après que celle-ci lui avait fait comprendre très clairement et plusieurs fois qu'elle ne voulait plus aucune relation avec lui. Elle lui avait par exemple écrit, le 21 octobre 2018, "Salut A._, J'ai essayé de te dire les choses gentiment mais tu me forces à faire autrement. Tu vis les choses de façon totalement unilatérale. Non, je n'ai pas de sentiments pour toi. Non, il ne se passera jamais rien entre nous. Non, je ne peux pas faire comme si tu ne m'avais pas écrit toutes ces choses. Raison pour laquelle, une relation même amicale, n'est plus envisageable. Ne penses plus à moi s'il te plaît. Bonne route" ou encore, le 26 octobre 2018 "Mais bordel, je n'ai jamais eu le début d'un sentiment amoureux à ton égard. JAMAIS. Je ne comprends même pas comment ça peut être une supposition valable dans ton esprit" en finissant par ces mots: "Laisse-moi tranquille et ne m'écris plus JAMAIS. JAMAIS. Ne réponds pas. Je ne veux pas te lire". Enfin, elle lui avait indiqué dans un dernier message du 30 octobre 2018 qu'elle porterait plainte à la police pour harcèlement s'il devait y avoir encore une seule action ou communication à son égard. Malgré le contenu de ces messages qui ne laissaient planer aucun doute sur la volonté de la plaignante de ne plus avoir de contact avec le prévenu, ce dernier avait continué à lui adresser des messages édifiants lui exposant notamment les mérites de leur future vie à deux et revenant systématiquement à la charge avec de nouveaux profils lorsque la plaignante parvenait à le bloquer sur les réseaux sociaux.
Aussi les juges cantonaux ont-ils retenu que le recourant savait, à partir du mois d'octobre 2018, que l'intimée ne souhaitait pas entretenir une relation de quelque nature que ce fût avec lui. Toutefois, les nombreux messages et autres actions du même type n'avaient cessé que le 24 juin 2019. Partant, les éléments constitutifs tant objectifs que subjectifs de l'<ref-law> étaient réalisés. S'agissant en particulier des éléments subjectifs de la méchanceté et de l'espièglerie, la juridiction cantonale a considéré qu'ils étaient réalisés du fait de l'intensité du comportement reproché au recourant (cf. consid. 1.3 supra). Cela étant, on discerne clairement les motifs qui ont guidé le jugement entrepris en tant qu'il porte sur l'utilisation abusive d'une installation de télécommunication et, compte tenu de l'acte de recours, le recourant a d'ailleurs bel et bien été en mesure d'en saisir la portée et de l'attaquer en connaissance de cause.
3.3.
3.3.1. L'art. 179 septies CP prévoit que celui qui, par méchanceté ou par espièglerie, aura utilisé abusivement une installation de télécommunication pour inquiéter un tiers ou pour l'importuner sera, sur plainte, puni d'une amende. Cette disposition protège le droit personnel de la victime à ne pas être importunée par certains actes commis au moyen d'une installation de télécommunication (<ref-ruling> consid. 5b et les références).
Selon la jurisprudence, les téléphones inquiétants et importuns doivent atteindre une certaine gravité minimale, sur le plan quantitatif et/ou qualitatif, pour constituer une atteinte à la sphère personnelle de la victime punissable pénalement au sens de l'art. 179 septies CP; en cas d'atteintes légères ou moyennes à la sphère personnelle causées par l'usage du téléphone, la limite de la punissabilité exige une certaine quantité d'actes; la question du nombre d'appels nécessaire pour admettre une utilisation abusive d'une installation de communication, dépend des circonstances du cas d'espèce et ne peut pas être déterminée de façon abstraite (<ref-ruling> consid. 2b/aa; arrêt 6B_717/2020 du 26 novembre 2020 consid. 3.1). Il y a méchanceté lorsque l'auteur commet l'acte répréhensible parce que le dommage ou les désagréments qu'il cause à autrui lui procurent de la satisfaction; quant à l'espièglerie, elle signifie agir un peu follement, par bravade ou sans scrupule, dans le but de satisfaire un caprice momentané (<ref-ruling> consid. 5b; arrêt 6B_717/2020 précité consid. 3.1).
3.3.2. En l'espèce, quand bien même le recourant aurait agi dans un but de conquête de la plaignante, la cour cantonale pouvait à tout le moins retenir, sans violer l'art. 179 septies CP, que son comportement avait atteint une intensité telle que la condition de l'espièglerie était remplie. En effet, en matière d'amoureux éconduit, la condition de l'espièglerie est remplie, selon la jurisprudence, lorsque la situation s'apparente à du "stalking" (sur cette notion cf. <ref-ruling> consid. 3.2.2; <ref-ruling> consid. 2.3) avec les conséquences néfastes qu'il peut avoir sur le psychisme de la victime, par exemple en présence d'une action incessante de l'auteur, ultérieurement à une volonté affichée de la victime de ne pas (re) nouer la relation (cf. arrêt 6B_1088/2015 du 6 juin 2016 consid. 2.2). Dans une telle configuration, que l'on retrouve en l'espèce, il y a lieu de retenir, comme l'a fait l'autorité précédente, une volonté d'agir par espièglerie.
Pour le reste, l'art. 179 septies CP ne présuppose pas que l'auteur ait agi dans l'anonymat, de sorte que l'argument soulevé à cet égard tombe à faux. Quant à la quantité des actes reprochés, le recourant ne dit rien à cet égard, se limitant à affirmer qu'ils seraient bien inférieurs en nombre aux exigences posées par la jurisprudence. Or la question du nombre de contacts nécessaire pour admettre une utilisation abusive d'une installation de communication dépend des circonstances du cas d'espèce et le Tribunal fédéral n'a pas fixé de seuil en-deçà duquel l'infraction ne serait pas réalisée (cf. consid. 3.3.1 supra). Il n'est pas non plus pertinent d'examiner si le contenu des messages était de nature à causer une grave inquiétude à leur destinataire, dès lors que cette question se pose en présence d'un seul appel téléphonique (<ref-ruling> consid. 2), situation qui diffère de la présente cause.
4.
4.1. En ce qui concerne enfin la violation alléguée de l'<ref-law>, le recourant soutient que son comportement n'était pas propre à impressionner une personne de sensibilité moyenne et à l'entraver de manière substantielle dans sa liberté d'action, soulignant que la formule générale "de quelque autre manière" doit être interprétée de manière restrictive. Il considère que son comportement ne serait en rien comparable aux cas admis par la jurisprudence, dont il cite à titre d'exemples le cas de l'employé licencié qui s'était tenu 126 fois en l'espace d'une année sur le parking de son ancien employeur (ATF <ref-ruling>) ou de la femme qui avait envoyé à son ex-mari d'innombrables messages électroniques, lettres et cartes postales et avait publié des informations de nature intime sur sa page Facebook (<ref-ruling>). Enfin, il conteste le rapport de causalité entre son comportement et les répercussions décrites par l'intimée et soutient qu'il n'avait pas l'intention de l'entraver dans sa liberté d'action, reprenant en substance l'argumentation développée sous son grief d'arbitraire dans l'établissement des faits et l'appréciation des preuves.
4.2. Conformément à l'<ref-law>, se rend coupable de contrainte celui qui, en usant de violence envers une personne ou en la menaçant d'un dommage sérieux, ou en l'entravant de quelque autre manière dans sa liberté d'action, l'oblige à faire, à ne pas faire ou à laisser faire un acte.
Cette disposition protège la liberté d'action et de décision (<ref-ruling> consid. 3.2.1). La contrainte est une infraction de résultat. Pour qu'elle soit consommée, il faut que la victime, sous l'effet de moyens de contrainte illicites, commence à modifier son comportement, subissant ainsi l'influence voulue par l'auteur (arrêt 6B_367/2020 du 17 janvier 2022 consid. 13.3.1 et les arrêts cités). Outre l'usage de la violence ou de menaces laissant craindre la survenance d'un dommage sérieux, il peut également y avoir contrainte lorsque l'auteur entrave sa victime "de quelque autre manière" dans sa liberté d'action. Cette formule générale doit être interprétée de manière restrictive. N'importe quelle pression de peu d'importance ne suffit pas. Il faut que le moyen de contrainte utilisé soit, comme pour la violence ou la menace d'un dommage sérieux, propre à impressionner une personne de sensibilité moyenne et à l'entraver d'une manière substantielle dans sa liberté de décision ou d'action. Il s'agit donc de moyens de contrainte qui, par leur intensité et leur effet, sont analogues à ceux qui sont cités expressément par la loi (<ref-ruling> consid. 3.2.1 précité; <ref-ruling> consid. 3.3.1).
La contrainte peut être réalisée par une accumulation de comportements distincts de l'auteur, par exemple lorsque celui-ci importune sa victime par sa présence de manière répétée pendant une période prolongée ("stalking" ou harcèlement obsessionnel; cf. <ref-ruling> et <ref-ruling> consid. 2.3 à 2.5). Toutefois, en l'absence d'une norme spécifique réprimant de tels faits en tant qu'ensemble d'actes formant une unité, l'<ref-law> suppose, d'une part, que le comportement incriminé oblige la victime à agir, à tolérer ou à omettre un acte et, d'autre part, que cela puisse être appréhendé comme le résultat d'un comportement de contrainte plus précisément circonscrit (ATF <ref-ruling> consid. 2.4; arrêt 6B_693/2020 du 18 janvier 2021 consid. 4.1). Si le simple renvoi à un "ensemble d'actes" très divers commis sur une période étendue par l'auteur, respectivement à une modification par la victime de ses "habitudes de vie" ne suffit pas, faute de mettre en évidence de manière suffisamment précise quel comportement a pu entraîner quel résultat à quel moment (ATF <ref-ruling> consid. 2.4), l'intensité requise par l'<ref-law> peut néanmoins résulter du cumul de comportements divers ou de la répétition de comportements identiques sur une durée prolongée (<ref-ruling> consid. 3.2.2).
Sur le plan subjectif, il faut que l'auteur ait agi intentionnellement, c'est-à-dire qu'il ait voulu contraindre la victime à adopter le comportement visé en étant conscient de l'illicéité de son propre comportement; le dol éventuel suffit (<ref-ruling> consid. 2c; arrêt 6B_367/2020 précité consid. 13.3.1).
4.3. L'argumentation du recourant ne fait apparaître aucune violation de l'<ref-law> par les juges cantonaux. En l'espèce, ceux-ci ont suffisamment identifié l'ensemble des actes reprochés au recourant et ont constaté la modification des habitudes de vie de l'intimée pour échapper à la présence du recourant (cf. let. B.b). Ils ont relevé en particulier que la plaignante se faisait systématiquement raccompagner chez elle par une amie lors de ses sorties et qu'elle vivait dans la crainte permanente que le recourant la suive jusque chez elle, ce qui l'avait également contrainte à suivre des cours de self-défense pendant plusieurs mois. L'intimée s'était ainsi comportée, du moins en partie, en fonction des agissements et de la volonté du recourant. Les éléments constitutifs objectifs de l'infraction de contrainte sont ainsi réalisés, de sorte qu'il n'est pas pertinent d'examiner si le comportement du recourant était moins intrusif ou d'une autre manière moins grave que les cas de jurisprudence qu'il cite.
En tant que le recourant conteste avoir agi intentionnellement, en particulier n'avoir pas eu conscience des conséquences de son comportement, son point de vue se heurte aux constatations de la cour cantonale, qui lient le Tribunal fédéral conformément à l'<ref-law> puisqu'elles échappent au grief d'arbitraire (cf. consid. 2.4 supra). On rappellera que, selon ces mêmes constatations, malgré que la plaignante lui ait clairement exprimé sa volonté de ne plus avoir de contact avec lui déjà en octobre 2018 et en dépit de la menace d'une plainte pénale, ce dernier a continué ses agissements et a écrit à l'intéressée sans discontinuer jusqu'au 24 mai 2019, se créant même de nouveaux profils sur les réseaux sociaux pour contourner les blocages mis en place. Dans ces circonstances, la cour cantonale était fondée à retenir que l'élément subjectif de l'infraction était réalisé, à tout le moins sous la forme du dol éventuel.
5.
Au vu de ce qui précède, le recours doit être rejeté, dans la mesure où il est recevable (cf. consid. 2.4 supra). Le recourant, qui succombe, supportera les frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 22 avril 2022
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Juge présidant : Denys
La Greffière : Castella