Envoyer un e-mail en fonction de l’adresse SMTP d’un compte (Outlook)
Cette rubrique montre comment créer un message électronique et l’envoyer à partir d’un compte Microsoft Outlook, l’adresse SMTP (Simple Mail Transfer Protocol) de ce compte étant donnée.
|
|Helmut Obertanner propose les exemples de code suivants. Helmut est un professionnel microsoft le plus précieux avec une expertise dans les outils de développement Microsoft Office dans Microsoft Visual Studio et Microsoft Office Outlook.|
Les exemples de code managé suivants sont écrits dans C# et Visual Basic. Pour exécuter un exemple de code managé .NET Framework qui doit appeler un modèle COM (Component Object Model), vous devez utiliser un assembly d’interopérabilité qui définit et mappe des interfaces managées avec des objets COM dans la bibliothèque de types de modèle objet. Pour Outlook, vous pouvez utiliser Visual Studio et l’assembly d’interopérabilité de base (PIA) d’Outlook. Avant d’exécuter des exemples de code managé pour Outlook 2013, assurez-vous que vous avez installé le PIA d’Outlook 2013 et que vous avez ajouté une référence au composant Bibliothèque d’objets Microsoft Outlook 15.0 dans Visual Studio. Vous devez utiliser les exemples de code suivants dans la ThisAddIn
classe d’un complément Outlook (à l’aide des outils de développement Office pour Visual Studio). L'objet Application dans le code doit être un objet Application Outlook approuvé fourni par ThisAddIn.Globals
. Pour plus d’informations sur l’utilisation de l’assembly PIA Outlook pour développer des solutions Outlook managées, consultez bienvenue dans la référence de l’assembly d’interopérabilité principal Outlook sur MSDN.
Les exemples de code suivants contiennent les SendEmailFromAccount
méthodes et GetAccountForEmailAddress
de la Sample
classe, implémentées dans le cadre d’un projet de complément Outlook. Chaque projet ajoute une référence à l'assembly PIA d'Outlook en fonction de l'espace de noms Microsoft.Office.Interop.Outlook. La SendEmailFromAccount
méthode accepte comme arguments d’entrée un objet Application approuvé et des chaînes qui représentent l’objet, le corps, une liste de destinataires délimitée par des points-virgules et l’adresse SMTP d’un compte de messagerie. SendEmailFromAccount
crée un objet MailItem et initialise les propriétés To, Subject et Body avec les arguments donnés. Pour rechercher l’objet Account à partir duquel envoyer l’e-mail, SendEmailFromAccount
appelle la GetAccountForEmailAddress
méthode , qui correspond à l’adresse SMTP donnée avec la propriété SmtpAddress de chaque compte pour le profil actuel. L’objet Account correspondant est retourné à SendEmailFromAccount
, qui initialise ensuite la propriété SendUsingAccount de l’objet MailItem avec cet objet Account et envoie l’objet MailItem.
L'exemple de code suivant est écrit en C#.
using System;
using System.Text;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
class Sample
{
public static void SendEmailFromAccount(Outlook.Application application, string subject, string body, string to, string smtpAddress)
{
// Create a new MailItem and set the To, Subject, and Body properties.
Outlook.MailItem newMail = (Outlook.MailItem)application.CreateItem(Outlook.OlItemType.olMailItem);
newMail.To = to;
newMail.Subject = subject;
newMail.Body = body;
// Retrieve the account that has the specific SMTP address.
Outlook.Account account = GetAccountForEmailAddress(application, smtpAddress);
// Use this account to send the email.
newMail.SendUsingAccount = account;
newMail.Send();
}
public static Outlook.Account GetAccountForEmailAddress(Outlook.Application application, string smtpAddress)
{
// Loop over the Accounts collection of the current Outlook session.
Outlook.Accounts accounts = application.Session.Accounts;
foreach (Outlook.Account account in accounts)
{
// When the email address matches, return the account.
if (account.SmtpAddress == smtpAddress)
{
return account;
}
}
throw new System.Exception(string.Format("No Account with SmtpAddress: {0} exists!", smtpAddress));
}
}
}
L'exemple de code suivant est écrit en Visual Basic.
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
Shared Sub SendEmailFromAccount(ByVal application As Outlook.Application, _
ByVal subject As String, ByVal body As String, ByVal recipients As String, ByVal smtpAddress As String)
' Create a new MailItem and set the To, Subject and Body properties.
Dim newMail As Outlook.MailItem = DirectCast(application.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
newMail.To = recipients
newMail.Subject = subject
newMail.Body = body
' Retrieve the account that has the specific SMTP address.
Dim account As Outlook.Account = GetAccountForEmailAddress(application, smtpAddress)
' Use this account to send the email.
newMail.SendUsingAccount = account
newMail.Send()
End Sub
Shared Function GetAccountForEmailAddress(ByVal application As Outlook.Application, ByVal smtpAddress As String) As Outlook.Account
' Loop over the Accounts collection of the current Outlook session.
Dim accounts As Outlook.Accounts = application.Session.Accounts
Dim account As Outlook.Account
For Each account In accounts
' When the email address matches, return the account.
If account.SmtpAddress = smtpAddress Then
Return account
End If
Next
Throw New System.Exception(String.Format("No Account with SmtpAddress: {0} exists!", smtpAddress))
End Function
End Class
End Namespace
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.