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