如何捕获用户的 Outlook 电子邮件地址?

How to capture the user's Outlook email address?

我在 Excel 中创建了一个 VBA 函数来识别当前用户的电子邮件地址。

Public Function UserName()

Dim OL, olAllUsers, oExchUser, oentry, myitem As Object
Dim User As String

Set OL = CreateObject("outlook.application")
Set olAllUsers = OL.Session.AddressLists.Item("All Users").AddressEntries

User = OL.Session.CurrentUser.Name

Set oentry = olAllUsers.Item(User)

Set oExchUser = oentry.GetExchangeUser()

UserName = oExchUser.PrimarySmtpAddress

End Function

对于大多数用户来说,这会显示他们的电子邮件地址(例如 john_doe@generic.com)。

对于某些它不会更新默认值,这是我自己的电子邮件,因为我尝试时成功执行了代码。

如果所有用户的电子邮件地址都是不变的,那么可以说 gmail.com 是不变的。而系统的user_name是user_id那么你可以这样试试

Dim User As String
user = environ("Username")
email = user & "gmail.com"

您可以使用 Account.SmtpAddress 属性 获取 SMTP 电子邮件地址。它 returns 表示 Account.

的简单邮件传输协议 (SMTP) 地址的字符串
Dim UserMailAddress As String
Set UserMailAddress = OL.Session.CurrentUser.SmtpAddress

万一您获得类似 Exchange 的电子邮件地址,您可以将其转换为 SMTP 电子邮件地址。有关详细信息,请参阅 HowTo: Convert Exchange-based email address into SMTP email address