The user cancelled therefore you WILL get an error - every time. What you have to do with error handling is to ask yourself - what errors do I want to ignore and which ones are valid errors that tell me there is a problem?
1 - error is 0: everything ok
2 - error is 2501: user cancelled, that is fine so ignore
3 - all other errors: trap them
The EmailExit routine should handle any other errors.
You may want to see what it contains - from here it looks like "Exit Sub", no error handling.
Code:
On Error Resume Next
DoCmd.SendObject acSendReport, "Reportname", acFormatPDF
If Err = 0 Then
ElseIf Err <> 2501 Then
MsgBox Err.Number & " " & Err.Description
End If