There are 5 'from' addresses when you send an email:
1.
SMTP credentials/SMTP authentication - this is what you provide to Smtp.Login / Smtp.UseBestLogin methods.
It is used to authenticate against SMTP server.
2.
SMTP envelope - this is what you provide in 'MAIL FROM' command during SMTP conversation.
By default Mail.dll takes it from IMail.From / IMail.Sender fields, when needed (VERP) it can be explicitly specified by using SmtpMail class.
This address is used for non-delivery reports.
3.
'From: ' email header - who wrote the message (it can be a list) - IMail.From
4.
'Sender: ' email header - who sent the message - IMail.Sender.
5.
'Reply-To: ' email header - who should get a reply, when recipient hits reply in their email client - IMail.ReplyTo.
In most cases all those address are equal.
Most servers don't allow sending email in someone else name.
If I do this, the email appears to send ok (no exceptions thrown)
Please examine the return value of Smtp.SendMessage method. Especially Status field.
You can turn on logging to obtain SMTP communication logs:
https://www.limilabs.com/blog/logging-in-mail-dll