You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Swift.API.Common; using System; using System.Collections.Generic; using System.IO; using System.Net.Mail; using System.Net.Mime;
namespace Swift.web.Library { public class SmtpMailSetting { public SmtpMailSetting() { ToEmails = ""; CcEmails = ""; BccEmails = ""; MsgSubject = ""; MsgBody = ""; SmtpPort = Convert.ToInt16(GetStatic.ReadWebConfig("SmtpPort", "")); SmtpServer = GetStatic.ReadWebConfig("SmtpServer", ""); SendEmailId = GetStatic.ReadWebConfig("SendEmailId", ""); SendEmailPwd = GetStatic.ReadWebConfig("SendEmailPwd", ""); EnableSsl = true; }
public int SmtpPort { get; set; } public string SmtpServer { get; set; } public string SendEmailId { get; set; } public string SendEmailPwd { get; set; } public string ToEmails { get; set; } public string CcEmails { get; set; } public string BccEmails { get; set; } public string MsgSubject { get; set; } public string MsgBody { get; set; } public bool EnableSsl { get; set; } public string Status { get; set; }
/// <summary>
/// Send mail through gme SMTP server
/// </summary>
/// <param name="smtpMail">
/// receiver details mail body and subject
/// </param>
/// <returns>
/// </returns>
public string SendSmtpMail(SmtpMailSetting smtpMail, List<AttachmentModel> attachmentList = null, List<AttachmentModel> embadedList = null) { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient(); try { SmtpServer.Host = smtpMail.SmtpServer; SmtpServer.Port = smtpMail.SmtpPort; SmtpServer.UseDefaultCredentials = false; SmtpServer.Credentials = new System.Net.NetworkCredential(smtpMail.SendEmailId, smtpMail.SendEmailPwd); SmtpServer.EnableSsl = EnableSsl;
mail.From = new MailAddress(smtpMail.SendEmailId); mail.To.Add(smtpMail.ToEmails); var ccList = smtpMail.CcEmails.Split(';'); if (ccList[0] != "") { for (int i = 0; i < ccList.Length; i++) { mail.CC.Add(ccList[i]); } }
//if (!string.IsNullOrEmpty(smtpMail.CcEmails))
// mail.CC.Add(smtpMail.CcEmails);
if (!string.IsNullOrEmpty(smtpMail.BccEmails)) mail.Bcc.Add(smtpMail.BccEmails);
mail.Subject = smtpMail.MsgSubject; mail.IsBodyHtml = true; mail.Body = smtpMail.MsgBody;
if (attachmentList != null) { foreach (var item in attachmentList) { Attachment attachment = new Attachment(item.FilePath, item.FileType); ContentDisposition disposition = attachment.ContentDisposition; disposition.CreationDate = File.GetCreationTime(item.FilePath); disposition.ModificationDate = File.GetLastWriteTime(item.FilePath); disposition.ReadDate = File.GetLastAccessTime(item.FilePath); disposition.FileName = Path.GetFileName(item.FileName); disposition.Size = new FileInfo(item.FilePath).Length; disposition.DispositionType = DispositionTypeNames.Attachment; mail.Attachments.Add(attachment); } }
if (embadedList != null) { if (embadedList.Count > 0) { AlternateView vw = GetEmbeddedImage(embadedList, smtpMail.MsgBody); mail.AlternateViews.Add(vw); } }
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; SmtpServer.Send(mail); smtpMail.Status = "Y"; SmtpServer.Dispose(); } catch (SmtpFailedRecipientsException ex) { for (int i = 0; i < ex.InnerExceptions.Length; i++) { SmtpStatusCode status = ex.InnerExceptions[i].StatusCode; if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) { // Console.WriteLine("Delivery failed - retrying in 5 seconds.");
System.Threading.Thread.Sleep(5000); SmtpServer.Send(mail); } else { // Console.WriteLine("Failed to deliver message to {0}", ex.InnerExceptions[i].FailedRecipient);
//throw ex;
smtpMail.Status = "N"; smtpMail.MsgBody = ex.Message; GetStatic.EmailNotificationLog(smtpMail); } } } catch (Exception ex) { smtpMail.Status = "N"; smtpMail.MsgBody = ex.ToString(); GetStatic.EmailNotificationLog(smtpMail); } finally { SmtpServer.Dispose(); } GetStatic.EmailNotificationLog(smtpMail);
return (smtpMail.Status == "Y") ? "Mail Send" : "Error while sending Email"; }
private AlternateView GetEmbeddedImage(List<AttachmentModel> attachmentList, string htmlBody) { AlternateView alternateView = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html); foreach (var item in attachmentList) { byte[] bytes = System.Convert.FromBase64String(item.Byte64String); LinkedResource res = new LinkedResource(new MemoryStream(bytes), item.FileType); res.ContentId = item.FileName; alternateView.LinkedResources.Add(res); } return alternateView; } } }
|