Send E-Mail As and On Behalf Of
Microsoft Exchange supports Send As and Send On Behalf Of permissions to be granted to users for individual e-mail addresses. Sending e-mail from Outlook for these users is very simple – they just enter the desired address in the From field of a new message (toggled with the Show From command on the Options ribbon) and if they have the required permission it will be sent accordingly – either as if it was actually sent from that address or as sent by the user on behalf of the address in the From field.
If you want to achieve this from code there is a little more work involved. First of all the user must be authenticated on the server using one of the methods below:
SmtpClient smtp = new SmtpClient("smtp.domain.com");
// use user's existing credentials
smtp.UseDefaultCredentials = true;
// pass username and password
smtp.Credentials = new NetworkCredentials("username", "password");
The next step is to set up the correct headers in the message otherwise the server will return error code 5.7.1
describing the permission the user does not have.
To send the e-mail as only the From
property has to contain the desired address:
MailMessage mail = new MailMessage();
mail.From = new MailAddress("send.as@domain.com");
To send the e-mail on behalf of another user the Sender
property must additionally contain the user's e-mail address:
MailMessage mail = new MailMessage();
mail.From = new MailAddress("send.as@domain.com");
mail.Sender = new MailAddress("user.address@domain.com");
On a related note, the required permissions can be granted using PowerShell.
To grant the Send As permission:
Add-ADPermission –Identity "user1" –User "user2" –ExtendedRights Send-As
To grant the Send On Behalf Of permission:
Set-Mailbox "user1" -GrantSendOnBehalfTo "user2"
In both cases the user1
specifies the mailbox to grant the permission for and the user2
specifies the user to grant the permission to.