Comparing two VBA codes for getting the SMTP address of a mailitem
Is there a difference between the two codes below? Do they achieve the same thing, or bluntly put, which one is the better choice over the other dealing with unforeseen scenarios? objMail is a MailItem object on an Outlook Exchange Server.
Your feedback would appreciated.
[#1]
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = objMail.Sender.GetExchangeUser.PrimarySmtpAddress
Else
Sender_email = objMail.SenderEmailAddress
End If
[#2]
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim Sender_PA As Outlook.PropertyAccessor
Set Sender_PA = objMail.Sender.PropertyAccessor
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = Sender_PA.GetProperty(PR_SMTP_ADDRESS)
Else
Sender_email = objMail.SenderEmailAddress
End If
vba server outlook smtp exchange-server
add a comment |
Is there a difference between the two codes below? Do they achieve the same thing, or bluntly put, which one is the better choice over the other dealing with unforeseen scenarios? objMail is a MailItem object on an Outlook Exchange Server.
Your feedback would appreciated.
[#1]
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = objMail.Sender.GetExchangeUser.PrimarySmtpAddress
Else
Sender_email = objMail.SenderEmailAddress
End If
[#2]
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim Sender_PA As Outlook.PropertyAccessor
Set Sender_PA = objMail.Sender.PropertyAccessor
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = Sender_PA.GetProperty(PR_SMTP_ADDRESS)
Else
Sender_email = objMail.SenderEmailAddress
End If
vba server outlook smtp exchange-server
add a comment |
Is there a difference between the two codes below? Do they achieve the same thing, or bluntly put, which one is the better choice over the other dealing with unforeseen scenarios? objMail is a MailItem object on an Outlook Exchange Server.
Your feedback would appreciated.
[#1]
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = objMail.Sender.GetExchangeUser.PrimarySmtpAddress
Else
Sender_email = objMail.SenderEmailAddress
End If
[#2]
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim Sender_PA As Outlook.PropertyAccessor
Set Sender_PA = objMail.Sender.PropertyAccessor
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = Sender_PA.GetProperty(PR_SMTP_ADDRESS)
Else
Sender_email = objMail.SenderEmailAddress
End If
vba server outlook smtp exchange-server
Is there a difference between the two codes below? Do they achieve the same thing, or bluntly put, which one is the better choice over the other dealing with unforeseen scenarios? objMail is a MailItem object on an Outlook Exchange Server.
Your feedback would appreciated.
[#1]
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = objMail.Sender.GetExchangeUser.PrimarySmtpAddress
Else
Sender_email = objMail.SenderEmailAddress
End If
[#2]
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
Dim Sender_PA As Outlook.PropertyAccessor
Set Sender_PA = objMail.Sender.PropertyAccessor
Dim Sender_email As String
Sender_email = vbNullString
If objMail.SenderEmailType = "EX" Then
Sender_email = Sender_PA.GetProperty(PR_SMTP_ADDRESS)
Else
Sender_email = objMail.SenderEmailAddress
End If
vba server outlook smtp exchange-server
vba server outlook smtp exchange-server
edited Nov 19 '18 at 15:00
asked Nov 19 '18 at 14:39
Barok
468
468
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
[#1] is preferable - it is expensive to touch objMail.Sender
, you should avoid that if yo ucan. #2 also assumes that PR_SMTP_ADDRESS
is always available. Generally, this is not the case, and you might also want to check PR_EMS_AB_PROXY_ADDRESSES
.
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53376945%2fcomparing-two-vba-codes-for-getting-the-smtp-address-of-a-mailitem%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
[#1] is preferable - it is expensive to touch objMail.Sender
, you should avoid that if yo ucan. #2 also assumes that PR_SMTP_ADDRESS
is always available. Generally, this is not the case, and you might also want to check PR_EMS_AB_PROXY_ADDRESSES
.
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
add a comment |
[#1] is preferable - it is expensive to touch objMail.Sender
, you should avoid that if yo ucan. #2 also assumes that PR_SMTP_ADDRESS
is always available. Generally, this is not the case, and you might also want to check PR_EMS_AB_PROXY_ADDRESSES
.
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
add a comment |
[#1] is preferable - it is expensive to touch objMail.Sender
, you should avoid that if yo ucan. #2 also assumes that PR_SMTP_ADDRESS
is always available. Generally, this is not the case, and you might also want to check PR_EMS_AB_PROXY_ADDRESSES
.
[#1] is preferable - it is expensive to touch objMail.Sender
, you should avoid that if yo ucan. #2 also assumes that PR_SMTP_ADDRESS
is always available. Generally, this is not the case, and you might also want to check PR_EMS_AB_PROXY_ADDRESSES
.
answered Nov 19 '18 at 15:52
Dmitry Streblechenko
42.3k32760
42.3k32760
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
add a comment |
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Dmitry@ Thank you for your suggestions. I will probably stick with [#1]. On the other hand, If PR_SMTP_ADDRESS is unavailable, what value do I get for Sender_PA.GetProperty(PR_SMTP_ADDRESS)? How do I use PR_EMS_AB_PROXY_ADDRESSES in case PR_SMTP_ADDRESS becomes unavailable?
– Barok
Nov 20 '18 at 1:21
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
Latest versions of Outlook will raise an error if the property is not available. Older versions return null. PR_EMS_AB_PROXY_ADDRESSES is a multivalued property, so yo uwill get an array of strings. You want the one prefixed with"SMTP:" (note the caps). Try it.
– Dmitry Streblechenko
Nov 20 '18 at 5:18
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53376945%2fcomparing-two-vba-codes-for-getting-the-smtp-address-of-a-mailitem%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown