Enviar un correo electrónico con la dirección SMTP de una cuenta (Outlook)
Artículo
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#.
cs
using System;
using System.Text;
using Outlook = Microsoft.Office.Interop.Outlook;
namespaceOutlookAddIn1
{
classSample
{
publicstaticvoidSendEmailFromAccount(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();
}
publicstatic 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;
}
}
thrownew System.Exception(string.Format("No Account with SmtpAddress: {0} exists!", smtpAddress));
}
}
}
El siguiente es el ejemplo de código en Visual Basic.
VB
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
SharedSub SendEmailFromAccount(ByVal application As Outlook.Application, _
ByVal subject AsString, ByVal body AsString, ByVal recipients AsString, ByVal smtpAddress AsString)
' 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()
EndSubSharedFunction GetAccountForEmailAddress(ByVal application As Outlook.Application, ByVal smtpAddress AsString) 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
ForEach account In accounts
' When the email address matches, return the account. If account.SmtpAddress = smtpAddress ThenReturn account
EndIfNextThrowNew System.Exception(String.Format("No Account with SmtpAddress: {0} exists!", smtpAddress))
EndFunctionEndClassEndNamespace
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.
Aprenda a configurar cuentas, redactar y enviar mensajes de correo electrónico, adjuntar documentos, asignar escenarios, enviar documentos de ventas y comprobar la bandeja de salida y los correos electrónicos enviados en Microsoft Dynamics 365 Business Central.
Obtenga una certificación Microsoft Office Specialist (MOS) para demostrar que posee las aptitudes necesarias para sacar el máximo partido de Outlook 2016.