Kullandığım E-Posta Gönderme Classı
İsteyenler benim classı kullanabilirler, örneklerle kullanımı yazının devamında...
Daha önceden http://www.daltinkurt.com/Icerik/129/ASP-NET-ile-mail-gonderimi.aspx adresinde eposta gönderme ile ilgili bir yazı yazmıştım.
Şimdi de bir arkadaşımın da isteği ile kullandığım eposta gönderme class ını sizlerle paylaşmak istedim.
İşte buyrun kullandığım class:
Merak etmeyin proje dosyalarını toplu halde indirebileceksiniz :)
namespace DevrimAltinkurt { public class EPosta { #region private string strFromAddress = ""; string strFromName = ""; string strServer = ""; string strUser = ""; string strPass = ""; string strReplyTo = ""; int portNo = 0; int ssl = 0; string konu; string mesaj; MailAddressCollection to; MailAddressCollection cc; MailAddressCollection bcc; #endregion #region public public string StrFromAddress { get { return strFromAddress; } set { strFromAddress = value; } } public string StrFromName { get { return strFromName; } set { strFromName = value; } } public string StrServer { get { return strServer; } set { strServer = value; } } public string StrUser { get { return strUser; } set { strUser = value; } } public string StrPass { get { return strPass; } set { strPass = value; } } public string StrReplyTo { get { return strReplyTo; } set { strReplyTo = value; } } public int PortNo { get { return portNo; } set { portNo = value; } } public bool Ssl { get { return (ssl == 1) ? true : false; } set { ssl = value ? 1 : 0; } } public string Mesaj { get { return mesaj; } set { mesaj = value; } } public string Konu { get { return konu; } set { konu = value; } } #endregion #region constructors /// <summary> /// Bilgiler web.config ten okunacak /// </summary> public EPosta() { if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["epostaFromAddress"].ToString())) { strFromAddress = ConfigurationManager.AppSettings["epostaFromAddress"].ToString(); strFromName = ConfigurationManager.AppSettings["epostaFromName"].ToString(); strServer = ConfigurationManager.AppSettings["epostaServer"].ToString(); strUser = ConfigurationManager.AppSettings["epostaUser"].ToString(); strPass = ConfigurationManager.AppSettings["epostaPass"].ToString(); strReplyTo = ConfigurationManager.AppSettings["epostaReply"].ToString(); portNo = Convert.ToInt32(ConfigurationManager.AppSettings["epostaPort"].ToString()); try { ssl = Convert.ToInt32(ConfigurationManager.AppSettings["epostaSSL"].ToString()); } catch (Exception) { ssl = 0; } } } /// <summary> /// Bilgileri elle ayarla /// </summary> /// <param name="strFromAddress"></param> /// <param name="strFromName"></param> /// <param name="strServer"></param> /// <param name="strUser"></param> /// <param name="strPass"></param> /// <param name="strReplyTo"></param> /// <param name="portNo"></param> public EPosta(string strFromAddress, string strFromName, string strServer, string strUser, string strPass, string strReplyTo, int portNo, bool ssl) { this.strFromAddress = strFromAddress; this.strFromName = strFromName; this.strServer = strServer; this.strUser = strUser; this.strPass = strPass; this.strReplyTo = strReplyTo; this.portNo = portNo; this.Ssl = ssl; } #endregion #region private methods private MailAddressCollection To { get { return to; } set { to = value; } } private MailAddressCollection Bcc { get { return bcc; } set { bcc = value; } } private MailAddressCollection Cc { get { return cc; } set { cc = value; } } #endregion #region public methods public void EkleTo(string eposta) { if (To == null) To = new MailAddressCollection(); To.Add(eposta); } public void EkleBcc(string eposta) { if (Bcc == null) Bcc = new MailAddressCollection(); Bcc.Add(eposta); } public void EkleCc(string eposta) { if (Cc == null) Cc = new MailAddressCollection(); Cc.Add(eposta); } public void Gonder() { try { int mailAdet = (To == null ? 0 : To.Count) + (Bcc == null ? 0 : Bcc.Count) + (Cc == null ? 0 : Cc.Count); if (mailAdet == 0) throw new Exception("Gönderilecek eposta adresi belirtilmedi"); MailMessage msg = new MailMessage(); msg.BodyEncoding = System.Text.Encoding.UTF8; msg.IsBodyHtml = true; msg.Subject = Konu; msg.Body = Mesaj; msg.ReplyTo = new MailAddress(strReplyTo); msg.From = new MailAddress(strFromAddress, strFromName); if (To != null) foreach (MailAddress mail in To) msg.To.Add(mail); if (Cc != null) foreach (MailAddress mail in Cc) msg.CC.Add(mail); if (Bcc != null) foreach (MailAddress mail in Bcc) msg.Bcc.Add(mail); SmtpClient smtp = new SmtpClient(strServer, portNo); smtp.Timeout = 1000000000; //smtp.UseDefaultCredentials = false; NetworkCredential nc = new NetworkCredential(strUser, strPass); smtp.Credentials = (ICredentialsByHost)nc.GetCredential(strServer, portNo, "Basic"); // AuthTypes: "Basic", "NTLM", "Digest", "Kerberos", "Negotiate" //smtp.Credentials = nc; if (ssl == 1) smtp.EnableSsl = true; smtp.Send(msg); } catch (Exception) { throw; } } #endregion } }
Bu class ı kullanabilmek için şu namespaceleri tanımlıyoruz:
using System; using System.Configuration; using System.Net; using System.Net.Mail;
Peki bu classı nasıl kullanabiliriz. 3 değişik şekilde kullanabilirsiniz.
1) Bilgileri web.config ten okuyarak:
try { // bilgiler web.config ten okunacak EPosta eposta = new EPosta(); eposta.Konu = txtKonu.Text; eposta.Mesaj = txtMesaj.Text.Replace(Environment.NewLine, "<br/>"); eposta.EkleTo(txtTo.Text); eposta.Gonder(); lblSonuc.Text = "Eposta gönderildi"; } catch (Exception ex) { lblSonuc.Text = ex.Message; }
web.config e şu satırları ekliyoruz:
<appSettings> <!--# Eposta gönderme ayarları--> <add key="epostaFromAddress" value="abc@xyz.com"/> <add key="epostaReply" value="abc@xyz.com"/> <add key="epostaFromName" value="Devrim Altınkurt"/> <add key="epostaServer" value="mail.xyz.com"/> <add key="epostaSSL" value="0"/> <add key="epostaPort" value="1234"/> <add key="epostaUser" value="abc@xyz.com"/> <add key="epostaPass" value="sifre"/> <add key="epostaTo" value="abc@xyz.com"/> </appSettings>
2) Bilgileri constructordan vererek:
try { // bilgileri elle ver EPosta eposta = new EPosta("abc@xyz.com", "Devrim Altınkurt", "mail.xyz.com", "abc@xyz.com", "sifre", "abc@xyz.com", 1234, false); eposta.Konu = txtKonu.Text; eposta.Mesaj = txtMesaj.Text.Replace(Environment.NewLine, "<br/>"); eposta.EkleTo(txtTo.Text); eposta.Gonder(); lblSonuc.Text = "Eposta gönderildi"; } catch (Exception ex) { lblSonuc.Text = ex.Message; }
3) Bilgileri public properties aracılığıyla vererek:
try { // bilgileri elle veriyoruz EPosta eposta = new EPosta { StrFromAddress = "abc@xyz.com", StrFromName = "Devrim Altınkurt", StrServer = "mail.xyz.com", StrUser = "abc@xyz.com", StrPass = "sifre", StrReplyTo = "abc@xyz.com", PortNo = 1234 }; eposta.Konu = txtKonu.Text; eposta.Mesaj = txtMesaj.Text.Replace(Environment.NewLine, "<br/>"); eposta.EkleTo(txtTo.Text); eposta.Gonder(); lblSonuc.Text = "Eposta gönderildi"; } catch (Exception ex) { lblSonuc.Text = ex.Message; }
Eposta gönderme classını ve örnek kodları buradan indirebilirsiniz:
Güle güle kullanın :)
#email #eposta #mail #posta #class #sınıf #bcc #cc #to #system #net