Bu yazımızda C# Windows Form ile Gmail üzerinden e-posta gönderen, Dosya Eklemek için OpenFileDialog penceresini kullanan bir proje oluşturacağız. Öncelikle form tasarımını aşağıdaki şekilde oluşturuyoruz.
Form tasarımını oluşturduktan sonra sonra kod penceresine geçiyoruz. Öncelikle projemize
1 2 3 4 |
using System.Net.Mail; using System.Net; |
ekliyoruz.Dosya Ekle butonuna tıklayarak
1 2 3 4 5 6 7 8 9 10 |
private void button2_Click(object sender, EventArgs e) { OpenFileDialog dosya = new OpenFileDialog(); dosya.Title = "www.yazilimkodlama.com"; dosya.ShowDialog(); DosyaYolu = dosya.FileName; label3.Text = "Dosya Eklendi"; } |
dosya seçmemizi sağlayan yukarıdaki kodları yazıyoruz. Burada DosyaYolu değişkenini public olarak tanımladık. Gönder butonuna ise aşağıdaki kodları yazıyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
private void button1_Click(object sender, EventArgs e) { SmtpClient sc = new SmtpClient(); sc.Port = 587; sc.Host = "smtp.gmail.com"; sc.EnableSsl = true; string kime = textBox1.Text; string konu = textBox2.Text; string icerik = textBox3.Text; sc.Credentials = new NetworkCredential("mailadresiniz@gmail.com", "şifreniz"); MailMessage mail = new MailMessage(); mail.From = new MailAddress("posta@gmail.com", "Ahmet Cansever"); mail.To.Add(kime); //mail.To.Add("alici2@mail.com"); //mail.CC.Add("alici3@mail.com"); //mail.CC.Add("alici4@mail.com"); mail.Subject = konu; mail.IsBodyHtml = true; mail.Body = icerik; mail.Attachments.Add(new Attachment(DosyaYolu)); sc.Send(mail); |
Burada
1 2 3 |
sc.Credentials = new NetworkCredential("mailadresiniz@gmail.com", "şifreniz"); |
satırında gmail adresinizi ve şifrenizi yazmanız gerekiyor.
Kodlarımızın tamamı aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.Mail; using System.Net; namespace mailgonder { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string DosyaYolu; private void button1_Click(object sender, EventArgs e) { SmtpClient sc = new SmtpClient(); sc.Port = 587; sc.Host = "smtp.gmail.com"; sc.EnableSsl = true; string kime = textBox1.Text; string konu = textBox2.Text; string icerik = textBox3.Text; sc.Credentials = new NetworkCredential("mailadresiniz@gmail.com", "şifreniz"); MailMessage mail = new MailMessage(); mail.From = new MailAddress("posta@gmail.com", "Ahmet Cansever"); mail.To.Add(kime); //mail.To.Add("alici2@mail.com"); mail.Subject = konu; mail.IsBodyHtml = true; mail.Body = icerik; mail.Attachments.Add(new Attachment(DosyaYolu)); sc.Send(mail); } private void button2_Click(object sender, EventArgs e) { OpenFileDialog dosya = new OpenFileDialog(); dosya.Title = "www.yazilimkodlama.com"; dosya.ShowDialog(); DosyaYolu = dosya.FileName; label3.Text = "Dosya Eklendi"; } private void Form1_Load(object sender, EventArgs e) { } } } |
Önemli Not: Google, az güvenirliği olan (program vs.) yazılımlardan hesaba giriş yapmasını engellemektedir. “Google Hesabı: Oturum açma girişimi engellendi” maili gelecektir. Bu sorun için
bu adreste 3. adımda bulunan “Daha az güvenli uygulamalar için erişim
kısmını etkinleştir” demelisiniz.
ne yazıkki google yüzünden olmuyor dediğiniz ayar kaldırılmış 🙁
Bilgileriniz icin tesekkurler =)
Ben daha az guvenli kismini secmeden nasil yapabilecegimi biraz arastirmak istedim kaynak bulamadim yardim eder misiniz hangi kaynaklara bakabilirim.
Çok teşekkur ederım vede guzel bir site , güzel bir örnek konu örnek
Merhaba ahmet hocam datagridview deki bilgileri nasıl mail olarak gönderebiliriz bu konu ile ilgili de bir makale yapabilirmisiniz nette bu konu ile ilgili düzgün anlaşılır bir makale yok saygılar
İlla onun gmail olması şart mı ?
Hotmail outlook falan oluyormu?
Acil cevap yazın lütfen çok lazım
Örnekte ayarlar gmail e göre yapıldı.
hocam s.a. program düzgün çalışıyor eyvalalh emeğine sağlık fakat .rar uzantılı 100-200-300 mblık dosyaları gönderim sağlayamıyorum yardımcı olabilirseniz sevinirim
ahmet bey kodları çalıştırdım. Sorunsuz çalıştı, sonra o önemli notta belirttiğiniz ayarları düzelttim (güvenlik mailinin gelmesi üzerine) ondan sonra çalışmamaya başladı.
Merhaba,
Yazılarınızı zevkle takip ediyorum.Mail çalışıyor.Diğer arkadaşların da dediği gibi attachment zorunlu olmuş.bu kısım için mail attachmenti if içine aldıktan sonra artık zorunlu olmuyor. Rahatlıkla çalışıyor
if (DosyaYolu!=null)
{
mail.Attachments.Add(new Attachment(DosyaYolu));
}
Katkınız için teşekkürler.
Acil cevap lazım” sc.Send(mail); ” bu bölümde posta hatası diye uyarı veriyor neden böyle yapıyor ?
Merhaba. Yazının sonuna eklemiş olduğum Önemli Not kısmındaki işlemi gerçekleştirdinizmi?
Bana söylediğiniz uyarıdaki gibi bir şey olmadı ama. Gönder butonuna tıkladığım zaman hata olarak o bölümü veriyor. Nerede yanlış olabilir diye baktım fakat göremedim.
Verdiğiniz linkte ise sizin söylediğiniz gibi birsey göremedim.
Google Hesap ayarlarınızda Güvenlik Kontrolü bölümünde Daha az güvenli uygulamalar için erişimi etkinleştir seçeneği seçili olması gerekiyor.
Seçtim şuan, yine aynı sorunu veriyor.
Mail gönderirken dosya eklemeyi zorunlu tutuyor bu kodlar. Dosya eklemeyi isteğe bağlı hale nasıl getirebiliriz
Sorununuzla pazartesi ilgilenebilirim.