Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird die SMTP-Adresse (Simple Mail Transfer Protocol) des Absenders für ein E-Mail-Element abgerufen.
Beispiel
Zum Ermitteln der SMTP-Adresse für ein empfangenes E-Mail-Element verwenden Sie die SenderEmailAddress-Eigenschaft des MailItem-Objekts. Befindet sich der Absender jedoch innerhalb Ihrer Organisation, gibt SenderEmailAddress keine SMTP-Adresse zurück, d. h. Sie müssen das PropertyAccessor-Objekt verwenden, damit die SMTP-Adresse des Absenders zurückgegeben wird.
Im folgenden Codebeispiel ruft GetSenderSMTPAddress mithilfe des PropertyAccessor-Objekts Werte ab, die im Outlook-Objektmodell nicht direkt verfügbar gemacht werden. GetSenderSMTPAddress verwendet ein MailItem. Ist der Wert der SenderEmailType -Eigenschaft des empfangenen MailItem-Elements "EX", befindet sich der Absender der Nachricht auf einem Exchange-Server innerhalb Ihrer Organisation. GetSenderSMTPAddress ruft mithilfe der Sender-Eigenschaft des MailItem-Objekts den Absender ab, der durch das AddressEntry-Objekt dargestellt wird. Stellt das AddressEntry-Objekt einen Exchange-Benutzer dar, wird im Beispielcode die GetExchangeUser() -Methode aufgerufen, damit das ExchangeUser -Objekt des AddressEntry-Objekts zurückgegeben wird. Anschließend verwendet GetSenderSMTPAddress die PrimarySmtpAddress-Eigenschaft des ExchangeUser-Objekts, um die SMTP-Adresse des Absenders zurückzugeben. Wenn das AddressEntry-Objekt für den Absender kein ExchangeUser-Objekt darstellt, wird die GetProperty(String) -Methode des PropertyAccessor-Objekts mit PR_SMTP_ADDRESS (PidTagSmtpAddress) als Argument verwendet, um die SMTP-Adresse des Absenders zurückzugeben.
Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die using-Anweisung darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgende Codezeile zeigt, wie Sie den Import und die Zuweisung in C# vornehmen.
using Outlook = Microsoft.Office.Interop.Outlook;
private string GetSenderSMTPAddress(Outlook.MailItem mail)
{
string PR_SMTP_ADDRESS =
@"http://schemas.microsoft.com/mapi/proptag/0x39FE001E";
if (mail == null)
{
throw new ArgumentNullException();
}
if (mail.SenderEmailType == "EX")
{
Outlook.AddressEntry sender =
mail.Sender;
if (sender != null)
{
//Now we have an AddressEntry representing the Sender
if (sender.AddressEntryUserType ==
Outlook.OlAddressEntryUserType.
olExchangeUserAddressEntry
|| sender.AddressEntryUserType ==
Outlook.OlAddressEntryUserType.
olExchangeRemoteUserAddressEntry)
{
//Use the ExchangeUser object PrimarySMTPAddress
Outlook.ExchangeUser exchUser =
sender.GetExchangeUser();
if (exchUser != null)
{
return exchUser.PrimarySmtpAddress;
}
else
{
return null;
}
}
else
{
return sender.PropertyAccessor.GetProperty(
PR_SMTP_ADDRESS) as string;
}
}
else
{
return null;
}
}
else
{
return mail.SenderEmailAddress;
}
}