The problem is that variables defined in subroutines have a private scope, meaning that they can't be accessed outside of that subroutine.
You have to declare the variable as public in the main body of code:
Public MailBody
MailBody = MailBody & " Special Instructions:" & SpecialInstructions & "</p>"
shoporder(placeorder)
MailBody = MailBody & "" & vbCrlf & ""