Saya memiliki aplikasi C # yang mengirimkan laporan spreadsheet Excel melalui email melalui server Exchange 2007 menggunakan SMTP. Ini datang dengan baik untuk pengguna Outlook, tetapi untuk pengguna Thunderbird dan Blackberry, lampiran telah diubah namanya menjadi "Bagian 1.2".
Saya menemukan artikel ini yang menjelaskan masalah tersebut, tetapi sepertinya tidak memberi saya solusi. Saya tidak memiliki kendali atas server Exchange sehingga tidak dapat membuat perubahan di sana. Apakah ada yang bisa saya lakukan di ujung C #? Saya telah mencoba menggunakan nama file pendek dan pengkodean HTML untuk tubuh tetapi tidak ada bedanya.
Kode pengiriman email saya hanyalah ini:
public static void SendMail(string recipient, string subject, string body, string attachmentFilename)
{
SmtpClient smtpClient = new SmtpClient();
NetworkCredential basicCredential = new NetworkCredential(MailConst.Username, MailConst.Password);
MailMessage message = new MailMessage();
MailAddress fromAddress = new MailAddress(MailConst.Username);
// setup up the host, increase the timeout to 5 minutes
smtpClient.Host = MailConst.SmtpServer;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = basicCredential;
smtpClient.Timeout = (60 * 5 * 1000);
message.From = fromAddress;
message.Subject = subject;
message.IsBodyHtml = false;
message.Body = body;
message.To.Add(recipient);
if (attachmentFilename != null)
message.Attachments.Add(new Attachment(attachmentFilename));
smtpClient.Send(message);
}
Terima kasih atas bantuannya.
c#
email
smtp
attachment
Jon
sumber
sumber
Attachment.Name
properti?Name
ditampilkan sebagai nama lampiran ketika email dengan lampiran diterima. Jadi Anda dapat mencoba nilai apa pun.Jawaban:
Kode sederhana untuk mengirim email dengan lampiran.
sumber: http://www.coding-issues.com/2012/11/sending-email-with-attachments-from-c.html
sumber
using(SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com")) { //code goes here using(MailMessage mail = new MailMessage()){ //code goes here } }
Mengisi bidang ContentDisposition secara eksplisit berhasil.
BTW , dalam kasus Gmail, Anda mungkin memiliki beberapa pengecualian tentang ssl secure atau bahkan port!
sumber
FileInfo
objek untuk mendapatkanCreationTime
,LastWriteTime
danLastAccessTime
properti? Anda tetap membuatnya untuk mendapatkanLength
properti itu.Berikut adalah kode pengiriman email sederhana dengan lampiran
Baca lebih lanjut Mengirim email dengan lampiran di C #
sumber
Menyelesaikan solusi Ranadheer, menggunakan Server.MapPath untuk mencari file
sumber
Server.MapPath
asalnya dan kapan harus digunakan?sumber
Saya telah membuat kode singkat untuk melakukannya dan saya ingin membagikannya dengan Anda.
Berikut kode utamanya:
sumber
Coba ini:
sumber
Saya mencoba kode yang disediakan oleh Ranadheer Reddy (di atas) dan berhasil dengan baik. Jika Anda menggunakan komputer perusahaan yang memiliki server terbatas, Anda mungkin perlu mengubah port SMTP ke 25 dan membiarkan nama pengguna dan kata sandi Anda kosong karena mereka akan diisi secara otomatis oleh admin Anda.
Awalnya, saya mencoba menggunakan EASendMail dari manajer paket nugent, hanya untuk menyadari bahwa ini adalah versi berbayar dengan uji coba 30 hari. Jangan mengurangi waktu Anda dengannya kecuali jika Anda berencana untuk membelinya. Saya perhatikan programnya berjalan lebih cepat menggunakan EASendMail, tetapi bagi saya, gratis mengalahkan dengan cepat.
Hanya 2 sen saya.
sumber
Gunakan metode ini di bawah layanan email Anda, ia dapat melampirkan badan email dan lampiran apa pun ke Microsoft Outlook
menggunakan Outlook = Microsoft.Office.Interop.Outlook; // Referensi Microsoft.Office.Interop.Outlook dari lokal atau nuget jika Anda akan menggunakan agen build nanti
sumber