Macro to copy email address

Status
Not open for further replies.

rollno

Member
Outlook version
Outlook 2010 64 bit
Email Account
IMAP
Sub getemail()

Dim m As MailItem

Set m = ActiveExplorer.Selection(1)

f = m.SenderEmailAddress

m.Close olDiscard

Set cb = CreateObject("clipbrd.clipboard")

cb.Clear

cb.SetText f & vbNewLine

End Sub

Hi I need to copy email address to clipboard using macro.The above script works fine for contacts that are not there in my address book but for contact that added to my outlook it does not work .i am on domain..I want it to copy email address for contacts not in my addressbook and for contacts that there in my address book it should copy the email address or the email address without their doman...Is It possible?
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
It's possible, but more complicated. If you want just the alias, you need to strip the domain - you could probably use mid, but i just happened to use this in a macro tonight, so I won't come up with one using mid.

After you get the address, you'd strip out the alias -

f= Left(f, Len(f) - InStr(1, f, "@"))

I'm not sure why your macro only works for contacts not in your address book - it should work for all messages, unless you mean it doesn't work for mail from people on your exchange server. SenderEmailAddress should work for Exchange addresses (although its a really long and use format).
 

rollno

Member
Outlook version
Outlook 2010 64 bit
Email Account
IMAP
Sub GetSenderMailAddress()
Dim olItem As Outlook.MailItem
If Application.ActiveExplorer.Selection.Count = 0 Then
MsgBox
"No Items selected!", vbCritical, "Error"
Exit Sub
End If
Set olItem = Application.ActiveInspector.currentItem


If olItem.sender.AddressEntryUserType = olExchangeUserAddressEntry Or _
olItem
.sender.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
Dim exchangeUser As exchangeUser
Set exchangeUser = olItem.sender.GetExchangeUser()
MsgBox exchangeUser
.PrimarySmtpAddress
Else
MsgBox olItem
.sender.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
End If
Set olItem = Nothing

End Sub

Can this be modified to copy just the alias to the clipboard..this shows up msgbox with the email address and also can be it modified to strip "@last part of the email" ... I m looking for your help Diane...please modify and send it to me :)

Thanks in advance.
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
You need to put the address in a string - you can replace msgbox with strAddress =

Then you need to split it since its one address, you might be able to use split, otherwise you need to use left.
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
oops, sorry about that, i meant to add the filter for the addresses but dropped my mouse and it posted on the bounce. :)

This will get the exchange alias from a string (and assumes you don't know if its the smtp or x500)

If InStr(1, LCase(strAddress), "/ou=") Then

strAddress = Right(strAddress , Len(strAddress) - InStr(1, LCase(strAddress), "recipients") - 13)

else

strAddress = Left(strAddress , Len(strAddress ) - InStr(1, strAddress , "@"))
 

rollno

Member
Outlook version
Outlook 2010 64 bit
Email Account
IMAP
Hi, Thanks for your response...Its SMTP i guess..but not sure..how to confirm? your new code is for my first code or for my second code?...
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
It's for Sub GetSenderMailAddress() - if you need it. It just depends if you get the long x.500 address or the smtp. Both are part of the gal entry and I'm not sure what olItem.sender.GetExchangeUser() returns.
 
Status
Not open for further replies.
Top