Я пытаюсь получить адрес электронной почты отправителя из электронной почты, которая является, отправляют использование другого адреса электронной почты. Отправителем как шоу в перспективе является ditribution-lists@domain.com от имени Имени пользователя [user.name@domain.com]. MAPI
объект имеет метод SentOnBehalfOfName
это возвращает "Имя пользователя", но не адрес электронной почты. Кто-либо знает, как получить поле user.name@domain.com?
using System;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
namespace Helpers
{
internal class EmailHelper
{
public static string GetSenderEmailAddress(Microsoft.Office.Interop.Outlook.MailItem mapiObject)
{
Microsoft.Office.Interop.Outlook.PropertyAccessor oPA;
string propName = "http://schemas.microsoft.com/mapi/proptag/0x0065001F";
oPA = mapiObject.PropertyAccessor;
string email = oPA.GetProperty(propName).ToString();
return email;
}
}
}
Обратные ссылки являются одноосновными, например , \1
или $1
- первое вложенное выражение в скобках и т. д. Как изложено, один картует другому без всяких раздумий.
Также следует отметить, что m.Groups [«0»]
предоставляет всю соответствующую подстроку, поэтому не забудьте пропустить «0»
, если выполняется итерация над regex.GetGroupNames ()
.
Я использую метод .get () - это предпочтительный метод.
Python 2.5.2 (r252:60911, Jul 22 2009, 15:33:10)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dis
>>> def f1(key, d):
... if key in d:
... return d[key]
... else:
... return "default"
...
>>> dis.dis(f1)
2 0 LOAD_FAST 0 (key)
3 LOAD_FAST 1 (d)
6 COMPARE_OP 6 (in)
9 JUMP_IF_FALSE 12 (to 24)
12 POP_TOP
3 13 LOAD_FAST 1 (d)
16 LOAD_FAST 0 (key)
19 BINARY_SUBSCR
20 RETURN_VALUE
21 JUMP_FORWARD 5 (to 29)
>> 24 POP_TOP
5 25 LOAD_CONST 1 ('default')
28 RETURN_VALUE
>> 29 LOAD_CONST 0 (None)
32 RETURN_VALUE
>>> def f2(key, d):
... return d.get(key, "default")
...
>>> dis.dis(f2)
2 0 LOAD_FAST 1 (d)
3 LOAD_ATTR 0 (get)
6 LOAD_FAST 0 (key)
9 LOAD_CONST 1 ('default')
12 CALL_FUNCTION 2
15 RETURN_VALUE
>>> def f3(key, d):
... try:
... return d[key]
... except KeyError:
... return "default"
...
>>> dis.dis(f3)
2 0 SETUP_EXCEPT 12 (to 15)
3 3 LOAD_FAST 1 (d)
6 LOAD_FAST 0 (key)
9 BINARY_SUBSCR
10 RETURN_VALUE
11 POP_BLOCK
12 JUMP_FORWARD 23 (to 38)
4 >> 15 DUP_TOP
16 LOAD_GLOBAL 0 (KeyError)
19 COMPARE_OP 10 (exception match)
22 JUMP_IF_FALSE 11 (to 36)
25 POP_TOP
26 POP_TOP
27 POP_TOP
28 POP_TOP
5 29 LOAD_CONST 1 ('default')
32 RETURN_VALUE
33 JUMP_FORWARD 2 (to 38)
>> 36 POP_TOP
37 END_FINALLY
>> 38 LOAD_CONST 0 (None)
41 RETURN_VALUE
-121--2246943- Если вы используете outlook 2007 у вас есть SunItem.PropertyAccessor и вы можете получить свойство PR_SENDER_EMAIL_ADDRESS mapi.
Маркус
Вы также можете посмотреть на Adobe BrowserLab:
-121--2449711-Создатель C++ говорит, что не нарушает принцип инкапсуляции, и я процитирую его:
Нарушает ли «друг» инкапсуляцию? Нет. «Друг» - это явный механизм предоставления доступа, как и членство. Вы не можете (в стандартной соответствующей программе) предоставить себе доступ к классу без изменения его источника.
Более чем ясно...
-121--530311-Есть ли у вас http://www.dimastr.com/outspy/ ? Это полезный инструмент для развертки объектов MAPI в Outlook.
Кроме того, при использовании http://www.dimastr.com/redemption/ можно получить свойство SentOnBealhOfEmailAddress объекта IRDOMail.