Enviar un correo electrónico con la dirección SMTP de una cuenta (Outlook)
En este tema se muestra cómo crear un correo electrónico y enviarlo desde una cuenta de Microsoft Outlook según la dirección del protocolo simple de transferencia de correo (SMTP, Simple Mail Transfer Protocol) de esa cuenta.
|
|Helmut Obertanner proporciona los siguientes ejemplos de código. Helmut es un profesional más valioso de Microsoft con experiencia en herramientas de desarrollo de Microsoft Office en Microsoft Visual Studio y Microsoft Office Outlook.|
Los siguientes ejemplos de código administrado están escritos en C# y Visual Basic. Para ejecutar un ejemplo de código administrado de .NET Framework que necesita llamar un modelo de objetos componentes (COM), debe utilizar un ensamblado de interoperabilidad que defina y asigne interfaces administradas a los objetos COM de la biblioteca de tipos de modelos de objetos. Para Outlook, puede utilizar Visual Studio y el ensamblado de interoperabilidad primario (PIA) de Outlook. Antes de ejecutar ejemplos de código administrado para Outlook 2013, compruebe que tiene el PIA de Outlook 2013 instalado y que ha añadido una referencia al componente biblioteca de objetos de Microsoft Outlook 15.0 en Visual Studio. Debe usar los siguientes ejemplos de código en la ThisAddIn
clase de un complemento de Outlook (con Office Developer Tools para Visual Studio). El objeto Application del código debe ser un objeto Application de Outlook de confianza proporcionado por ThisAddIn.Globals
. Si desea más información sobre el uso del PIA de Outlook para desarrollar soluciones de Outlook administradas, consulte Outlook 2013 Primary Interop Assembly Reference en MSDN.
Los ejemplos de código siguientes contienen los SendEmailFromAccount
métodos y GetAccountForEmailAddress
de la Sample
clase , implementados como parte de un proyecto de complemento de Outlook. Cada proyecto agrega una referencia al PIA de Outlook, que se basa en el espacio de nombres Microsoft.Office.Interop.Outlook. El método SendEmailFromAccount
acepta como argumentos de entrada un objeto Application de confianza y cadenas que representan el asunto, el cuerpo, una lista delimitada por punto y coma de los destinatarios y la dirección SMTP de una cuenta de correo electrónico. SendEmailFromAccount
crea un objeto MailItem e inicializa las propiedades To, Subject, y Body con los determinados argumentos. Para buscar el objeto Account desde el que se envíe el correo electrónico, SendEmailFromAccount
llama al método GetAccountForEmailAddress
que permite a la dirección SMTP determinada coincidir con la propiedad SmtpAddress de cada cuenta del perfil actual. El objeto Account coincidente se devuelve a SendEmailFromAccount
que, luego, inicializa la propiedad SendUsingAccount del MailItem con dicho objeto Account y envía el MailItem.
El siguiente es el ejemplo de código 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));
}
}
}
El siguiente es el ejemplo de código 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
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.