The code the way you have it with <br> is good for HTML. Underneath all that code put it like: First Name: <?= $firstname; ?> \r\n
… when you want it to output to email. Or are you trying to format the email as HTML?
What I was getting at is are you telling the mail function to use html for the message body? I just wondered if that was elsewhere in the code, but primarily because your <br> tags are showing rather than being interpreted, which suggests the email is being sent as plain text.
ETA: Also note that sending emails from the address that your form-filler typed into their form is fraught with issues. Most commercial mail servers will only send emails from a domain that they’re configured to handle. You’d be better to send the email from an address of your own, and set the “Reply-to” header to the form-fillers email address.
If you open the documentation for wp_mail ( https://developer.wordpress.org/reference/functions/wp_mail/ ) and find that bit that I quoted, the mention of wp_mail_content_type is a link to another page in their documentation that shows how to specify HTML email contents.
OK, good. It’s just that your code (which I can’t quote because you’ve posted it as an image for some reason) is specifying that the email is sent from $email, which is the same value that you put into the body of your email along with the other form contents, which led me to presume that it’s the form-fillers email. I’m not familiar with mailgun, so maybe that deals with it.
That seems to be the case, according to the notes on that page. Obviously you might need to have other html in the mail contents to make it display properly. Only way to be sure is to try it.