Enviar um email dado o endereço SMTP de uma conta (Outlook)
Este tópico mostra como criar um email e enviá-lo de uma conta do Microsoft Outlook, dado o endereço SMTP da conta.
|
| Helmut Obertanner forneceu os seguintes exemplos de código. Helmut é um profissional mais valioso da Microsoft com experiência em ferramentas de desenvolvimento do Microsoft Office no Microsoft Visual Studio e microsoft Office Outlook.|
The following managed code samples are written in C# and Visual Basic. To run a .NET Framework managed code sample that needs to call into a Component Object Model (COM), you must use an interop assembly that defines and maps managed interfaces to the COM objects in the object model type library. For Outlook, you can use Visual Studio and the Outlook Primary Interop Assembly (PIA). Before you run managed code samples for Outlook 2013, ensure that you have installed the Outlook 2013 PIA and have added a reference to the Microsoft Outlook 15.0 Object Library component in Visual Studio. Você deve usar os exemplos de código a ThisAddIn
seguir na classe de um suplemento do Outlook (usando ferramentas de desenvolvedor do Office para Visual Studio). The Application object in the code must be a trusted Outlook Application object provided by ThisAddIn.Globals
. For more information about using the Outlook PIA to develop managed Outlook solutions, see the Outlook 2013 Primary Interop Assembly Reference on MSDN.
Os exemplos de código a seguir contêm os SendEmailFromAccount
métodos e GetAccountForEmailAddress
da Sample
classe implementados como parte de um projeto de suplemento do Outlook. Cada projeto adiciona uma referência para o Outlook PIA, que se baseia no namespace Microsoft.Office.Interop.Outlook. O SendEmailFromAccount
método aceita como argumentos de entrada um objeto de Aplicativo confiável e cadeias de caracteres que representam o assunto, o corpo, uma lista delimitada por ponto e vírgula de destinatários e o endereço SMTP de uma conta de email. SendEmailFromAccount
cria um objeto MailItem e inicializa as propriedades To, Subject e Body com os argumentos fornecidos. Para localizar o objeto Account do qual enviar o email, SendEmailFromAccount
chama o GetAccountForEmailAddress
método, que corresponde ao endereço SMTP fornecido com a propriedade SmtpAddress de cada conta para o perfil atual. O objeto Account correspondente é retornado a SendEmailFromAccount
, que inicializa a propriedade SendUsingAccount do MailItem com esse objeto Account e envia o MailItem.
Veja a seguir o exemplo de código do 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));
}
}
}
Veja a seguir o exemplo de código do 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
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.