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.

98 lines
3.4 KiB

1 year ago
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Text;
namespace CK.SCP.Utils
{
public class MailHelper
{
private MailMessage mailMessage;
private SmtpClient smtpClient;
private string server;
private string username;
private string password;
private bool enablessl;
private bool credentials;
private int port;
public MailHelper(string To, string From, string Body, string Title, string Server, string Username, string Password, bool EnableSsl, int Port, bool Credentials, string AttachmentFile)
{
this.mailMessage = new MailMessage();
this.mailMessage.To.Add(To);
this.mailMessage.From = new MailAddress(From);
this.mailMessage.Subject = Title;
this.mailMessage.Body = Body;
if (AttachmentFile != "")
{
Attachment attachment = new Attachment(AttachmentFile);
this.mailMessage.Attachments.Add(attachment);
}
this.mailMessage.IsBodyHtml = true;
this.mailMessage.BodyEncoding = Encoding.UTF8;
this.mailMessage.Priority = MailPriority.Normal;
this.server = Server;
this.password = Password;
this.username = Username;
this.enablessl = EnableSsl;
this.port = Port;
this.credentials = Credentials;
}
public void Send()
{
if (this.mailMessage != null)
{
this.smtpClient = new SmtpClient();
if (!this.credentials)
{
this.smtpClient.Credentials = new NetworkCredential(this.username, this.password);
}
this.smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
this.smtpClient.Host = this.server;
this.smtpClient.Port = this.port;
this.smtpClient.EnableSsl = this.enablessl;
this.smtpClient.Send(this.mailMessage);
}
}
public void Attachments(string Path)
{
string[] pathArray = Path.Split(new char[]
{
','
});
for (int i = 0; i < pathArray.Length; i++)
{
Attachment data = new Attachment(pathArray[i], "application/octet-stream");
ContentDisposition disposition = data.ContentDisposition;
disposition.CreationDate = File.GetCreationTime(pathArray[i]);
disposition.ModificationDate = File.GetLastWriteTime(pathArray[i]);
disposition.ReadDate = File.GetLastAccessTime(pathArray[i]);
this.mailMessage.Attachments.Add(data);
}
}
public void SendAsync(SendCompletedEventHandler completedMethod)
{
if (this.mailMessage != null)
{
this.smtpClient = new SmtpClient();
this.smtpClient.Credentials = new NetworkCredential(this.mailMessage.From.Address, this.password);
this.smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
this.smtpClient.Host = "smtp." + this.mailMessage.From.Host;
this.smtpClient.SendCompleted += completedMethod.Invoke;
this.smtpClient.SendAsync(this.mailMessage, this.mailMessage.Body);
}
}
}
}