Actualización: noviembre 2007
Representa los datos adjuntos a un mensaje de correo electrónico.
Espacio de nombres:
System.Net.Mail
Ensamblado:
System (en System.dll)
Visual Basic (Declaración)
Public Class Attachment _
Inherits AttachmentBase
Dim instance As Attachment
public class Attachment : AttachmentBase
public ref class Attachment : public AttachmentBase
public class Attachment extends AttachmentBase
public class Attachment extends AttachmentBase
La clase Attachment se utiliza junto con la clase MailMessage. Todos los mensajes contienen un cuerpo (Body), donde se incluye el contenido del mensaje. Además del cuerpo, es posible que se deseen enviar archivos adicionales. Estos archivos se envían en forma de datos adjuntos y se representan en forma de instancias de Attachment. Para agregar datos adjuntos a un mensaje de correo, agregue estos datos a la colección MailMessage..::.Attachments.
El contenido de los datos adjuntos puede ser un objeto String, Stream o un nombre de archivo. Puede especificar el contenido de los datos adjuntos utilizando cualquiera de los constructores Attachment.
La propiedad ContentType representa la información del encabezado Content-Type MIME de los datos adjuntos. El encabezado Content-Type especifica el tipo de medio y el subtipo, y cualquier parámetro asociado. Utilice ContentType para obtener la instancia asociada a los datos adjuntos.
La propiedad ContentDisposition representa el encabezado Content-Disposition MIME. El encabezado Content-Disposition especifica la presentación y las marcas de tiempo de archivo de los datos adjuntos. Un encabezado Content-Disposition sólo se envía si los datos adjuntos son un archivo. Utilice la propiedad ContentDisposition para obtener la instancia asociada a los datos adjuntos.
La propiedad TransferEncoding representa el encabezado Content-Transfer-Encoding MIME.
En el siguiente ejemplo de código se muestra la forma de adjuntar un archivo a un mensaje de correo electrónico.
public static void CreateMessageWithAttachment(string server)
{
// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
string file = "data.xls";
// Create a message and set up the recipients.
MailMessage message = new MailMessage(
"jane@contoso.com",
"ben@contoso.com",
"Quarterly data report.",
"See the attached spreadsheet.");
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(file);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
disposition.ReadDate = System.IO.File.GetLastAccessTime(file);
// Add the file attachment to this e-mail message.
message.Attachments.Add(data);
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Send(message);
// Display the values in the ContentDisposition for the attachment.
ContentDisposition cd = data.ContentDisposition;
Console.WriteLine("Content disposition");
Console.WriteLine(cd.ToString());
Console.WriteLine("File {0}", cd.FileName);
Console.WriteLine("Size {0}", cd.Size);
Console.WriteLine("Creation {0}", cd.CreationDate);
Console.WriteLine("Modification {0}", cd.ModificationDate);
Console.WriteLine("Read {0}", cd.ReadDate);
Console.WriteLine("Inline {0}", cd.Inline);
Console.WriteLine("Parameters: {0}", cd.Parameters.Count);
foreach (DictionaryEntry d in cd.Parameters)
{
Console.WriteLine("{0} = {1}", d.Key, d.Value);
}
data.Dispose();
}
static void CreateMessageWithAttachment( String^ server )
{
// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
String^ file = L"data.xls";
// Create a message and set up the recipients.
MailMessage^ message = gcnew MailMessage( L"jane@contoso.com",L"ben@contoso.com",L"Quarterly data report.",L"See the attached spreadsheet." );
// Create the file attachment for this e-mail message.
Attachment^ data = gcnew Attachment(file, MediaTypeNames::Application::Octet);
// Add time stamp information for the file.
ContentDisposition^ disposition = data->ContentDisposition;
disposition->CreationDate = System::IO::File::GetCreationTime( file );
disposition->ModificationDate = System::IO::File::GetLastWriteTime( file );
disposition->ReadDate = System::IO::File::GetLastAccessTime( file );
// Add the file attachment to this e-mail message.
message->Attachments->Add( data );
//Send the message.
SmtpClient^ client = gcnew SmtpClient( server );
// Add credentials if the SMTP server requires them.
client->Credentials = CredentialCache::DefaultNetworkCredentials;
client->Send( message );
// Display the values in the ContentDisposition for the attachment.
ContentDisposition^ cd = data->ContentDisposition;
Console::WriteLine( L"Content disposition" );
Console::WriteLine( cd );
Console::WriteLine( L"File {0}", cd->FileName );
Console::WriteLine( L"Size {0}", cd->Size );
Console::WriteLine( L"Creation {0}", cd->CreationDate );
Console::WriteLine( L"Modification {0}", cd->ModificationDate );
Console::WriteLine( L"Read {0}", cd->ReadDate );
Console::WriteLine( L"Inline {0}", cd->Inline );
Console::WriteLine( L"Parameters: {0}", cd->Parameters->Count );
IEnumerator^ myEnum1 = cd->Parameters->GetEnumerator();
while ( myEnum1->MoveNext() )
{
DictionaryEntry^ d = safe_cast<DictionaryEntry^>(myEnum1->Current);
Console::WriteLine( L"{0} = {1}", d->Key, d->Value );
}
data->~Attachment();
client->~SmtpClient();
}
public static void CreateMessageWithAttachment(String server)
{
// Specify the file to be attached and sent.
// This example assumes that a file named Data.xls exists in the
// current working directory.
String file = "data.xls";
// Create a message and set up the recipients.
MailMessage message = new MailMessage("jane@contoso.com",
"ben@contoso.com", "Quarterly data report.",
"See the attached spreadsheet.");
// Create the file attachment for this e-mail message.
Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);
// Add time stamp information for the file.
ContentDisposition disposition = data.get_ContentDisposition();
disposition.set_CreationDate(System.IO.File.GetCreationTime(file));
disposition.set_ModificationDate(System.IO.File.GetLastWriteTime(file));
disposition.set_ReadDate(System.IO.File.GetLastAccessTime(file));
// Add the file attachment to this e-mail message.
message.get_Attachments().Add(data);
//Send the message.
SmtpClient client = new SmtpClient(server);
// Add credentials if the SMTP server requires them.
client.set_Credentials(CredentialCache.get_DefaultNetworkCredentials());
client.Send(message);
// Display the values in the ContentDisposition for the attachment.
ContentDisposition cd = data.get_ContentDisposition();
Console.WriteLine("Content disposition");
Console.WriteLine(cd.ToString());
Console.WriteLine("File {0}", cd.get_FileName());
Console.WriteLine("Size {0}", System.Convert.ToString(cd.get_Size()));
Console.WriteLine("Creation {0}", cd.get_CreationDate());
Console.WriteLine("Modification {0}", cd.get_ModificationDate());
Console.WriteLine("Read {0}", cd.get_ReadDate());
Console.WriteLine("Inline {0}",
System.Convert.ToString(cd.get_Inline()));
Console.WriteLine("Parameters: {0}",
System.Convert.ToString(cd.get_Parameters().get_Count()));
IEnumerator myEnumerable = (IEnumerator)cd.get_Parameters().
GetEnumerator();
while (myEnumerable.MoveNext()) {
DictionaryEntry d = (DictionaryEntry)myEnumerable.get_Current();
Console.WriteLine("{0} = {1}", d.get_Key(), d.get_Value());
}
data.Dispose();
} //CreateMessageWithAttachment
System..::.Object
System.Net.Mail..::.AttachmentBase
System.Net.Mail..::.Attachment
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
.NET Framework
Compatible con: 3.5, 3.0, 2.0
Referencia