Kirim Email Attachment dengan file dari bytes
Mengirim file attachment yg berasal dari lokasi file fisik mungkin sudah biasa. Virtual Path ada yg diberi hak akses agar tidak menulis file langsung ke fisik, melainkan file tersebut disimpan dalam database. Pada SQL Server terdapat tipe data yg disebut image, di .NET dikenal sebagai tipe data byte[].
Dari kontrol FileUpload, data dalam bentuk bytes dapat langsung diperoleh dengan properti .FileBytes.
byte[] datafile = FileUpload1.FileBytes;
SaveToDB(FileUpload1.FileName, FileUpload1.FileBytes); //method ini dibuat sendiri sesuai dataaccess yg dipakai masing2
Lalu serangkaian kode ini akan mengirimkan email berupa attachment yg berupa bytes[]. Anggap saja konten tsb merupakan file Ms Word (.doc).
String namapengirim = System.Configuration.ConfigurationSettings.AppSettings.Get("PengirimEmail");
String smtpserver = System.Configuration.ConfigurationSettings.AppSettings.Get("SMTPServer");
String alamatpengirim = System.Configuration.ConfigurationSettings.AppSettings.Get("AlamatPengirimEmail");
int smtpport = Convert.ToInt32(System.Configuration.ConfigurationSettings.AppSettings.Get("SMTPPort"));
String alamatpengirim = "admin@domain.com";
String namapengirim = "admin";
String alamatpenerima = "sonny@domain.com";
String namapenerima = "Sonny";
MailAddress SendFrom = new MailAddress(alamatpengirim, namapengirim);
MailAddress SendTo = new MailAddress(alamatpenerima, namapenerima);
byte[] datafile = GetDataFileFromDB(); //method ini dibuat sendiri untuk ambil data dari database yg bertipe bytes[]
String filename = "namafile.doc";
MailMessage MyMessage = new MailMessage(SendFrom, SendTo);
try
{
MyMessage.Subject = "subjek";
MyMessage.Body = "isi attachment";
MemoryStream ms = new MemoryStream(datafile);
MyMessage.Attachments.Add(new Attachment(ms, filename)); //pada add attachment terdapat parameter berupa Stream
SmtpClient emailClient = new SmtpClient(smtpserver, smtpport);
emailClient.Send(MyMessage);
lblWarn.Text = "Email has been sent!";
}
catch (Exception ex)
{
lblWarn.Text = ex.Message;
}