Agregar archivos de proyecto.
This commit is contained in:
119
Funciones.cs
Normal file
119
Funciones.cs
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Mail;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using tsCorreos;
|
||||||
|
using TsCorreos;
|
||||||
|
|
||||||
|
namespace TsCorreos
|
||||||
|
{
|
||||||
|
|
||||||
|
public class Funciones
|
||||||
|
{
|
||||||
|
|
||||||
|
public static async void EnviaCorreo(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, List<Attachment> AttachMents = null, List<AlternateView> AlternateViews = null, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "", bool CredencialesConDominio = false, SecurityProtocolType ProtocoloSeguridad = SecurityProtocolType.Tls, string NombreRemitente = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (ServidorSMTP == "smtp.gmail.com")
|
||||||
|
{
|
||||||
|
var tkgm = await TokenGmail.ObtieneTokenAsync(Remitente);
|
||||||
|
await GmailOAuthSender.EnviarCorreoAsync(tkgm.Config, tkgm.Token, Destinatario, Asunto, Cuerpo, CuerpoenHTML, CC, BCC, ResponderA, AttachMents);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FuncionesInternas.EnviaCorreo(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, AttachMents, AlternateViews, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, CuerpoenHTML, ResponderA, CredencialesConDominio, ProtocoloSeguridad, NombreRemitente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception(ex.Message, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static async void EnviaCorreoAL(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, ArrayList FicherosAdjuntos = null, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, string NombreRemitente = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (ServidorSMTP == "smtp.gmail.com")
|
||||||
|
{
|
||||||
|
var tkgm = await TokenGmail.ObtieneTokenAsync(Remitente);
|
||||||
|
await GmailOAuthSender.EnviarCorreoALAsync(tkgm.Config, tkgm.Token, Destinatario, Asunto, Cuerpo, false, CC, BCC, adjuntos: FicherosAdjuntos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FuncionesInternas.EnviaCorreoAL(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, FicherosAdjuntos, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, NombreRemitente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception(ex.Message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public static void EnviaCorreoCompruebaHTML(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, MemoryStream[] FicherosAdjuntos, string[] NombreFicherosAdjuntos, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "", string NombreRemitente = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (FicherosAdjuntos.Count() == 1 && NombreFicherosAdjuntos[0].EndsWith(".html.zip"))
|
||||||
|
{
|
||||||
|
string sDirectorioTMP = tsCorreos.Utilidades.ObtieneDirectorioAleatorio();
|
||||||
|
tsZip.Zip.ExtraeTodoDeZip(FicherosAdjuntos[0], sDirectorioTMP);
|
||||||
|
// tsZIP.zip.ExtraeTodoDeZip("f:\temp\csc.html.zip", sDirectorioTMP)
|
||||||
|
string sFichCuerpo = Directory.GetFiles(sDirectorioTMP, "*.html")[0];
|
||||||
|
string sCuerpo = System.Text.Encoding.UTF8.GetString(File.ReadAllBytes(sFichCuerpo));
|
||||||
|
var avHtml = AlternateView.CreateAlternateViewFromString(sCuerpo, null, MediaTypeNames.Text.Html);
|
||||||
|
string diradj = Directory.GetDirectories(sDirectorioTMP)[0];
|
||||||
|
string[] ficadj = Directory.GetFiles(diradj);
|
||||||
|
foreach (var f in ficadj)
|
||||||
|
{
|
||||||
|
var ms = new MemoryStream(File.ReadAllBytes(f));
|
||||||
|
var inline = new LinkedResource(ms, "image/" + Path.GetExtension(f).Trim('.'));
|
||||||
|
inline.ContentId = Path.GetFileNameWithoutExtension(f);
|
||||||
|
avHtml.LinkedResources.Add(inline);
|
||||||
|
}
|
||||||
|
var avs = new List<AlternateView>();
|
||||||
|
avs.Add(avHtml);
|
||||||
|
FuncionesInternas.EnviaCorreoHtml(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, null, avs, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, true, ResponderA, NombreRemitente);
|
||||||
|
Directory.Delete(sDirectorioTMP, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnviaCorreoMS(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, FicherosAdjuntos, NombreFicherosAdjuntos, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, CuerpoenHTML, ResponderA, NombreRemitente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception(ex.Message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async void EnviaCorreoMS(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, MemoryStream[] FicherosAdjuntos, string[] NombreFicherosAdjuntos, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "", string NombreRemitente = "")
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (ServidorSMTP == "smtp.gmail.com")
|
||||||
|
{
|
||||||
|
var tkgm = await TokenGmail.ObtieneTokenAsync(Remitente);
|
||||||
|
await GmailOAuthSender.EnviarCorreoMSAsync(tkgm.Config, tkgm.Token, Destinatario, Asunto, Cuerpo, false, CC, BCC, FicherosAdjuntos: FicherosAdjuntos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FuncionesInternas.EnviaCorreoMS(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, FicherosAdjuntos, NombreFicherosAdjuntos, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, CuerpoenHTML,ResponderA, NombreRemitente);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new Exception(ex.Message, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
821
FuncionesInternas.cs
Normal file
821
FuncionesInternas.cs
Normal file
@@ -0,0 +1,821 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Mail;
|
||||||
|
using System.Net.Mime;
|
||||||
|
using System.Net.Security;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
|
||||||
|
namespace TsCorreos
|
||||||
|
{
|
||||||
|
|
||||||
|
internal class FuncionesInternas
|
||||||
|
{
|
||||||
|
internal static void EnviaCorreoCompruebaHTML(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, MemoryStream[] FicherosAdjuntos, string[] NombreFicherosAdjuntos, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "")
|
||||||
|
{
|
||||||
|
if (FicherosAdjuntos.Count() == 1 && NombreFicherosAdjuntos[0].EndsWith(".html.zip"))
|
||||||
|
{
|
||||||
|
string sDirectorioTMP = tsCorreos.Utilidades.ObtieneDirectorioAleatorio();
|
||||||
|
tsZip.Zip.ExtraeTodoDeZip(FicherosAdjuntos[0], sDirectorioTMP);
|
||||||
|
// tsZIP.zip.ExtraeTodoDeZip("f:\temp\csc.html.zip", sDirectorioTMP)
|
||||||
|
string sFichCuerpo = Directory.GetFiles(sDirectorioTMP, "*.html")[0];
|
||||||
|
string sCuerpo = System.Text.Encoding.UTF8.GetString(File.ReadAllBytes(sFichCuerpo));
|
||||||
|
var avHtml = AlternateView.CreateAlternateViewFromString(sCuerpo, null, MediaTypeNames.Text.Html);
|
||||||
|
string diradj = Directory.GetDirectories(sDirectorioTMP)[0];
|
||||||
|
string[] ficadj = Directory.GetFiles(diradj);
|
||||||
|
foreach (var f in ficadj)
|
||||||
|
{
|
||||||
|
var ms = new MemoryStream(File.ReadAllBytes(f));
|
||||||
|
var inline = new LinkedResource(ms, "image/" + Path.GetExtension(f).Trim('.'));
|
||||||
|
inline.ContentId = Path.GetFileNameWithoutExtension(f);
|
||||||
|
avHtml.LinkedResources.Add(inline);
|
||||||
|
}
|
||||||
|
var avs = new List<AlternateView>();
|
||||||
|
avs.Add(avHtml);
|
||||||
|
EnviaCorreoHtml(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, null, avs, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, true, ResponderA);
|
||||||
|
Directory.Delete(sDirectorioTMP, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EnviaCorreoMS(ServidorSMTP, Remitente, Destinatario, Asunto, Cuerpo, FicherosAdjuntos, NombreFicherosAdjuntos, CC, BCC, CuentaCorreo, ContraseñaCorreo, Puerto, UsarSSL, CuerpoenHTML, ResponderA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
internal static void EnviaCorreoHtml(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, List<Attachment> AttachMents, List<AlternateView> AlternateViews, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "",string NombreRemitente="")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (NombreRemitente==null) NombreRemitente=Remitente;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
|
||||||
|
|
||||||
|
// Si es alguna de las máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
if (Environment.MachineName == "WIN81PDDANMUN" || (Environment.MachineName.ToUpper() ?? "") == ("INTI81".ToUpper() ?? "") || (Environment.MachineName.ToUpper() ?? "") == ("INTI10".ToUpper() ?? ""))
|
||||||
|
{
|
||||||
|
Destinatario = "danmun@tecnosis.eu";
|
||||||
|
}
|
||||||
|
|
||||||
|
Asunto = Asunto.Replace(Environment.NewLine, " ");
|
||||||
|
// myMessage = New MailMessage(Remitente, Destinatario, Asunto, Cuerpo)
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
myMessage.Body = Cuerpo;
|
||||||
|
myMessage.Subject = Asunto;
|
||||||
|
string[] destinatarios = Destinatario.Split(';');
|
||||||
|
foreach (var currentDestinatario in destinatarios)
|
||||||
|
{
|
||||||
|
Destinatario = currentDestinatario;
|
||||||
|
myMessage.To.Add(new MailAddress(Destinatario.Trim(), Destinatario.Trim()));
|
||||||
|
}
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (ResponderA is null || string.IsNullOrWhiteSpace(ResponderA))
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(ResponderA, ResponderA));
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.IsBodyHtml = CuerpoenHTML;
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
foreach (var scc in CC.Split(';'))
|
||||||
|
myMessage.CC.Add(scc);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
foreach (var sbcc in BCC.Split(';'))
|
||||||
|
myMessage.Bcc.Add(sbcc);
|
||||||
|
}
|
||||||
|
if (AttachMents != null)
|
||||||
|
{
|
||||||
|
foreach (var att in AttachMents)
|
||||||
|
myMessage.Attachments.Add(att);
|
||||||
|
}
|
||||||
|
if (AlternateViews != null)
|
||||||
|
{
|
||||||
|
foreach (var av in AlternateViews)
|
||||||
|
myMessage.AlternateViews.Add(av);
|
||||||
|
}
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw new Exception(myexp.Message, myexp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreo(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, List<Attachment> AttachMents, List<AlternateView> AlternateViews, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "", bool CredencialesConDominio = false, SecurityProtocolType ProtocoloSeguridad = SecurityProtocolType.Tls, string NombreRemitente ="")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(NombreRemitente)) NombreRemitente=Remitente;
|
||||||
|
if (string.IsNullOrEmpty(Destinatario) & !string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
Destinatario = CC;
|
||||||
|
CC = "";
|
||||||
|
}
|
||||||
|
Asunto = Asunto.Replace(Environment.NewLine, " ");
|
||||||
|
// myMessage = New MailMessage(Remitente, Destinatario, Asunto, Cuerpo)
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
myMessage.Subject = Asunto;
|
||||||
|
myMessage.Body = Cuerpo;
|
||||||
|
myMessage.From = new MailAddress(Remitente);
|
||||||
|
string[] sDestinatarios = null;
|
||||||
|
sDestinatarios = Destinatario.Split(';');
|
||||||
|
foreach (var dest in sDestinatarios)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(dest.Trim()))
|
||||||
|
{
|
||||||
|
myMessage.To.Add(dest.Trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (ResponderA is null || string.IsNullOrWhiteSpace(ResponderA))
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(ResponderA, ResponderA));
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.IsBodyHtml = CuerpoenHTML;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
string[] scc = CC.Split(';');
|
||||||
|
foreach (var c in scc)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(c))
|
||||||
|
myMessage.CC.Add(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
string[] sbcc = BCC.Split(';');
|
||||||
|
foreach (var b in sbcc)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(b))
|
||||||
|
myMessage.Bcc.Add(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (AttachMents != null)
|
||||||
|
{
|
||||||
|
foreach (var att in AttachMents)
|
||||||
|
myMessage.Attachments.Add(att);
|
||||||
|
}
|
||||||
|
if (AlternateViews != null)
|
||||||
|
{
|
||||||
|
foreach (var av in AlternateViews)
|
||||||
|
myMessage.AlternateViews.Add(av);
|
||||||
|
}
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
if (CredencialesConDominio)
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo, CuentaCorreo.Split('@')[1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
// SmtpMail.TargetName = "STARTTLS/smtp.office365.com"
|
||||||
|
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls OrElse SecurityProtocolType.Tls11 OrElse SecurityProtocolType.Tls12 OrElse SecurityProtocolType.Tls13
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
// ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback =
|
||||||
|
(sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw new Exception(myexp.Message, myexp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreoMS(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, MemoryStream[] FicherosAdjuntos, string[] NombreFicherosAdjuntos, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "", string NombreRemitente ="")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (NombreRemitente == "") NombreRemitente = Remitente;
|
||||||
|
Attachment myAttch;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
// Si es alguna de las máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
if (Environment.MachineName == "WIN81PDDANMUN" || (Environment.MachineName.ToUpper() ?? "") == ("INTI81".ToUpper() ?? "") || (Environment.MachineName.ToUpper() ?? "") == ("INTI10".ToUpper() ?? ""))
|
||||||
|
{
|
||||||
|
Destinatario = "danmun@tecnosis.eu";
|
||||||
|
}
|
||||||
|
|
||||||
|
Asunto = Asunto.Replace(Environment.NewLine, " ");
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
|
||||||
|
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
myMessage.Body = Cuerpo;
|
||||||
|
myMessage.Subject = Asunto;
|
||||||
|
string[] destinatarios = Destinatario.Split(';');
|
||||||
|
foreach (var currentDestinatario in destinatarios)
|
||||||
|
{
|
||||||
|
Destinatario = currentDestinatario;
|
||||||
|
myMessage.To.Add(new MailAddress(Destinatario.Trim(), Destinatario.Trim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (ResponderA is null || string.IsNullOrWhiteSpace(ResponderA))
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(ResponderA, ResponderA));
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, NombreRemitente));
|
||||||
|
}
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.IsBodyHtml = CuerpoenHTML;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
foreach (var scc in CC.Split(';'))
|
||||||
|
myMessage.CC.Add(scc);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
foreach (var sbcc in BCC.Split(';'))
|
||||||
|
myMessage.Bcc.Add(sbcc);
|
||||||
|
}
|
||||||
|
if (FicherosAdjuntos != null)
|
||||||
|
{
|
||||||
|
iCnt = FicherosAdjuntos.Count() - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(FicherosAdjuntos[i], NombreFicherosAdjuntos[i]);
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
SmtpMail.UseDefaultCredentials = false;
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
// ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback =
|
||||||
|
(sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw new Exception(myexp.Message, myexp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal static void EnviaCorreo(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, List<string> FicherosAdjuntos, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, bool CuerpoenHTML = false, string ResponderA = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Attachment myAttch;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
// Si es alguna de kas máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
// If Environment.MachineName = "WIN81PDDANMUN" OrElse Environment.MachineName.ToUpper = "INTI81".ToUpper OrElse Environment.MachineName.ToUpper = "INTI10".ToUpper Then
|
||||||
|
// Destinatario = "danmun@tecnosis.eu"
|
||||||
|
// End If
|
||||||
|
|
||||||
|
Asunto = Asunto.Replace(Environment.NewLine, " ");
|
||||||
|
myMessage = new MailMessage(Remitente, Destinatario, Asunto, Cuerpo);
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (ResponderA is null || string.IsNullOrWhiteSpace(ResponderA))
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, Remitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(ResponderA, ResponderA));
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(Remitente, Remitente));
|
||||||
|
}
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, Remitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, Remitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
myMessage.CC.Add(CC);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
myMessage.Bcc.Add(BCC);
|
||||||
|
}
|
||||||
|
if (FicherosAdjuntos != null)
|
||||||
|
{
|
||||||
|
iCnt = FicherosAdjuntos.Count - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
if (File.Exists(FicherosAdjuntos[i]))
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(FicherosAdjuntos[i]);
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
// myAttch.Dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
//ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreo(string servidorSMTP, string remitente, List<string> destinatarios, string asunto, string cuerpo, List<string> ficherosAdjuntos, string cc = "", string bcc = "", string cuentaCorreo = "", string contraseñaCorreo = "", int puerto = 25, bool usarSSL = false, bool cuerpoEsHTML = false, string responderA = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Attachment myAttch;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
// Si es alguna de kas máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
// If Environment.MachineName = "WIN81PDDANMUN" OrElse Environment.MachineName.ToUpper = "INTI81".ToUpper OrElse Environment.MachineName.ToUpper = "INTI10".ToUpper Then
|
||||||
|
// Destinatario = "danmun@tecnosis.eu"
|
||||||
|
// End If
|
||||||
|
|
||||||
|
asunto = asunto.Replace(Environment.NewLine, " ");
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
myMessage.Body = cuerpo;
|
||||||
|
myMessage.Subject = asunto;
|
||||||
|
foreach (var destinatario in destinatarios)
|
||||||
|
myMessage.To.Add(new MailAddress(destinatario, destinatario));
|
||||||
|
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (responderA is null || string.IsNullOrWhiteSpace(responderA))
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(responderA, responderA));
|
||||||
|
myMessage.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
myMessage.Sender = new MailAddress(remitente, remitente);
|
||||||
|
myMessage.From = new MailAddress(remitente, remitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(cc))
|
||||||
|
{
|
||||||
|
foreach (var scc in cc.Split(';'))
|
||||||
|
myMessage.CC.Add(scc);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(bcc))
|
||||||
|
{
|
||||||
|
foreach (var sbcc in bcc.Split(';'))
|
||||||
|
myMessage.Bcc.Add(sbcc);
|
||||||
|
}
|
||||||
|
if (ficherosAdjuntos != null)
|
||||||
|
{
|
||||||
|
iCnt = ficherosAdjuntos.Count - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
if (File.Exists(ficherosAdjuntos[i]))
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(ficherosAdjuntos[i]);
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
// myAttch.Dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(servidorSMTP))
|
||||||
|
SmtpMail.Host = servidorSMTP;
|
||||||
|
SmtpMail.Port = puerto;
|
||||||
|
if (!string.IsNullOrEmpty(cuentaCorreo))
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(cuentaCorreo, contraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = usarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreoAL(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, ArrayList FicherosAdjuntos = null, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false, string NombreRemitente="" )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (NombreRemitente == "") NombreRemitente=Remitente;
|
||||||
|
Attachment myAttch;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
// myMessage = New MailMessage(Remitente, Destinatario, Asunto, Cuerpo)
|
||||||
|
myMessage = new MailMessage();
|
||||||
|
myMessage.Body = Cuerpo;
|
||||||
|
myMessage.Subject = Asunto;
|
||||||
|
string[] destinatarios = Destinatario.Split(';');
|
||||||
|
foreach (var currentDestinatario in destinatarios)
|
||||||
|
{
|
||||||
|
Destinatario = currentDestinatario;
|
||||||
|
myMessage.To.Add(new MailAddress(Destinatario.Trim(), Destinatario.Trim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
myMessage.ReplyTo = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, NombreRemitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
string[] scc = CC.Split(';');
|
||||||
|
foreach (var c in scc)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(c))
|
||||||
|
myMessage.CC.Add(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
string[] sbcc = BCC.Split(';');
|
||||||
|
foreach (var b in sbcc)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(b))
|
||||||
|
myMessage.Bcc.Add(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (FicherosAdjuntos != null)
|
||||||
|
{
|
||||||
|
iCnt = FicherosAdjuntos.Count - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
if (File.Exists(FicherosAdjuntos[i].ToString()))
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(FicherosAdjuntos[i].ToString());
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
// myAttch.Dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
// SmtpMail.UseDefaultCredentials = True
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback =
|
||||||
|
(sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
|
||||||
|
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw myexp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreoVariosAdjuntos(string ServidorSMTP, string Remitente, string Destinatario, string Asunto, string Cuerpo, List<FicheroAdjunto> FicherosAdjuntos = null, string CC = "", string BCC = "", string CuentaCorreo = "", string ContraseñaCorreo = "", int Puerto = 25, bool UsarSSL = false)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Attachment myAttch;
|
||||||
|
SmtpClient SmtpMail;
|
||||||
|
MailMessage myMessage;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
myMessage = new MailMessage(Remitente, Destinatario, Asunto, Cuerpo);
|
||||||
|
myMessage.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
myMessage.ReplyTo = new MailAddress(Remitente, Remitente);
|
||||||
|
myMessage.Sender = new MailAddress(Remitente, Remitente);
|
||||||
|
myMessage.From = new MailAddress(Remitente, Remitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
myMessage.CC.Add(CC);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
myMessage.Bcc.Add(BCC);
|
||||||
|
}
|
||||||
|
ContentDisposition cd;
|
||||||
|
if (FicherosAdjuntos !=null)
|
||||||
|
{
|
||||||
|
iCnt = FicherosAdjuntos.Count - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(FicherosAdjuntos[i].Ruta))
|
||||||
|
{
|
||||||
|
if (File.Exists(FicherosAdjuntos[i].Ruta))
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(FicherosAdjuntos[i].Ruta);
|
||||||
|
cd = myAttch.ContentDisposition;
|
||||||
|
cd.FileName = FicherosAdjuntos[i].NombreFichero;
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (FicherosAdjuntos[i].Fichero != null && FicherosAdjuntos[i].Fichero.Length > 0)
|
||||||
|
{
|
||||||
|
myAttch = new Attachment(new MemoryStream(FicherosAdjuntos[i].Fichero), FicherosAdjuntos[i].NombreFichero);
|
||||||
|
cd = myAttch.ContentDisposition;
|
||||||
|
cd.FileName = FicherosAdjuntos[i].NombreFichero;
|
||||||
|
myMessage.Attachments.Add(myAttch);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmtpMail = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(ServidorSMTP))
|
||||||
|
SmtpMail.Host = ServidorSMTP;
|
||||||
|
SmtpMail.Port = Puerto;
|
||||||
|
if (!string.IsNullOrEmpty(CuentaCorreo))
|
||||||
|
{
|
||||||
|
SmtpMail.Credentials = new NetworkCredential(CuentaCorreo, ContraseñaCorreo);
|
||||||
|
}
|
||||||
|
SmtpMail.EnableSsl = UsarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
|
||||||
|
SmtpMail.Send(myMessage);
|
||||||
|
}
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw myexp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Envía un correo electrónico. Puede recibir adjuntos mediante un Dictionary(Of String, Stream).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="servidorSMTP"></param>
|
||||||
|
/// <param name="remitente"></param>
|
||||||
|
/// <param name="destinatario"></param>
|
||||||
|
/// <param name="asunto"></param>
|
||||||
|
/// <param name="cuerpo"></param>
|
||||||
|
/// <param name="adjuntos">Un Dictionary(Of String, Stream). La clave es el nombre del archivo adjunto, el valor es el contenido del archivo adjunto en forma de Stream.</param>
|
||||||
|
/// <param name="cc"></param>
|
||||||
|
/// <param name="bcc"></param>
|
||||||
|
/// <param name="cuentaCorreo"></param>
|
||||||
|
/// <param name="contraseñaCorreo"></param>
|
||||||
|
/// <param name="puerto"></param>
|
||||||
|
/// <param name="usarSSL"></param>
|
||||||
|
/// <remarks></remarks>
|
||||||
|
internal static void EnviarCorreoElectrónico(string servidorSMTP, string remitente, string destinatario, string asunto, string cuerpo, Dictionary<string, Stream> adjuntos = null, string cc = "", string bcc = "", string cuentaCorreo = "", string contraseñaCorreo = "", int puerto = 25, bool usarSSL = false, string ResponderA = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
SmtpClient clienteSMTP;
|
||||||
|
MailMessage mensaje;
|
||||||
|
|
||||||
|
// Si es alguna de las máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
// If Environment.MachineName = "WIN81PDDANMUN" OrElse Environment.MachineName.ToUpper = "INTI81".ToUpper OrElse Environment.MachineName.ToUpper = "INTI10".ToUpper Then
|
||||||
|
// destinatario = "danmun@tecnosis.eu"
|
||||||
|
// End If
|
||||||
|
|
||||||
|
asunto = asunto.Replace(Environment.NewLine, " ");
|
||||||
|
mensaje = new MailMessage(remitente, destinatario, asunto, cuerpo);
|
||||||
|
mensaje.BodyEncoding = System.Text.Encoding.Default;
|
||||||
|
if (ResponderA is null || string.IsNullOrWhiteSpace(ResponderA))
|
||||||
|
{
|
||||||
|
mensaje.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mensaje.ReplyToList.Add(new MailAddress(ResponderA, ResponderA));
|
||||||
|
mensaje.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
mensaje.Sender = new MailAddress(remitente, remitente);
|
||||||
|
mensaje.From = new MailAddress(remitente, remitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(cc))
|
||||||
|
{
|
||||||
|
mensaje.CC.Add(cc);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(bcc))
|
||||||
|
{
|
||||||
|
mensaje.Bcc.Add(bcc);
|
||||||
|
}
|
||||||
|
if (adjuntos != null)
|
||||||
|
{
|
||||||
|
if (adjuntos.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var adjunto in adjuntos)
|
||||||
|
mensaje.Attachments.Add(new Attachment(adjunto.Value, adjunto.Key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clienteSMTP = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(servidorSMTP))
|
||||||
|
clienteSMTP.Host = servidorSMTP;
|
||||||
|
clienteSMTP.Port = puerto;
|
||||||
|
if (!string.IsNullOrEmpty(cuentaCorreo))
|
||||||
|
{
|
||||||
|
clienteSMTP.Credentials = new NetworkCredential(cuentaCorreo, contraseñaCorreo);
|
||||||
|
}
|
||||||
|
clienteSMTP.EnableSsl = usarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
|
||||||
|
clienteSMTP.Send(mensaje);
|
||||||
|
}
|
||||||
|
catch (Exception myexp)
|
||||||
|
{
|
||||||
|
throw new Exception(myexp.Message, myexp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void EnviaCorreoMultiplesDestinatarios(string servidorSMTP, string remitente, List<string> listaDestinatarios, string asunto, string cuerpo, List<string> ficherosAdjuntos, string CC = "", string BCC = "", string cuentaCorreo = "", string contraseñaCorreo = "", int puerto = 25, bool usarSSL = false, string responderA = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Attachment misAdjuntos;
|
||||||
|
SmtpClient clienteSMTP;
|
||||||
|
MailMessage miMensaje;
|
||||||
|
int i, iCnt;
|
||||||
|
|
||||||
|
// // Si es alguna de kas máquinas de desarrollo de danmun, el correo se envía solamente a danmun. Son pruebas.
|
||||||
|
// If Environment.MachineName = "WINXP-PARALLELS" OrElse
|
||||||
|
// Environment.MachineName = "WINXP-DE-DANIEL" OrElse
|
||||||
|
// Environment.MachineName.ToUpper = "Win81PDdanmun".ToUpper OrElse
|
||||||
|
// Environment.MachineName.ToUpper.StartsWith("INTI") Then
|
||||||
|
// listaDestinatarios = New List(Of String)
|
||||||
|
// listaDestinatarios.Add("danmun@tecnosis.net")
|
||||||
|
// End If
|
||||||
|
|
||||||
|
foreach (var destinatario in listaDestinatarios)
|
||||||
|
{
|
||||||
|
asunto = asunto.Replace(Environment.NewLine, " ");
|
||||||
|
miMensaje = new MailMessage(new MailAddress(remitente, remitente), new MailAddress(destinatario, destinatario))
|
||||||
|
{
|
||||||
|
Subject = asunto,
|
||||||
|
Body = cuerpo,
|
||||||
|
BodyEncoding = System.Text.Encoding.UTF8
|
||||||
|
};
|
||||||
|
if (responderA is null || string.IsNullOrWhiteSpace(responderA))
|
||||||
|
{
|
||||||
|
miMensaje.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
miMensaje.ReplyToList.Add(new MailAddress(responderA, responderA));
|
||||||
|
miMensaje.ReplyToList.Add(new MailAddress(remitente, remitente));
|
||||||
|
}
|
||||||
|
miMensaje.Sender = new MailAddress(remitente, remitente);
|
||||||
|
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(CC))
|
||||||
|
{
|
||||||
|
miMensaje.CC.Add(CC);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(BCC))
|
||||||
|
{
|
||||||
|
miMensaje.Bcc.Add(BCC);
|
||||||
|
}
|
||||||
|
if (ficherosAdjuntos != null)
|
||||||
|
{
|
||||||
|
iCnt = ficherosAdjuntos.Count - 1;
|
||||||
|
var loopTo = iCnt;
|
||||||
|
for (i = 0; i <= loopTo; i++)
|
||||||
|
{
|
||||||
|
if (File.Exists(ficherosAdjuntos[i]))
|
||||||
|
{
|
||||||
|
misAdjuntos = new Attachment(ficherosAdjuntos[i]);
|
||||||
|
miMensaje.Attachments.Add(misAdjuntos);
|
||||||
|
// misAdjuntos.Dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clienteSMTP = new SmtpClient();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(servidorSMTP))
|
||||||
|
clienteSMTP.Host = servidorSMTP;
|
||||||
|
clienteSMTP.Port = puerto;
|
||||||
|
if (!string.IsNullOrEmpty(cuentaCorreo))
|
||||||
|
{
|
||||||
|
clienteSMTP.Credentials = new NetworkCredential(cuentaCorreo, contraseñaCorreo);
|
||||||
|
}
|
||||||
|
clienteSMTP.EnableSsl = usarSSL;
|
||||||
|
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||||
|
clienteSMTP.Send(miMensaje);
|
||||||
|
System.Threading.Thread.Sleep(1000 * (listaDestinatarios.Count - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
throw new Exception(e.Message, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FicheroAdjunto
|
||||||
|
{
|
||||||
|
public string Ruta { get; set; }
|
||||||
|
public string NombreFichero { get; set; }
|
||||||
|
public byte[] Fichero { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
44
TokenGmail.cs
Normal file
44
TokenGmail.cs
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using Org.BouncyCastle.Asn1;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace tsCorreos
|
||||||
|
{
|
||||||
|
public class TokenGmail
|
||||||
|
{
|
||||||
|
private string _id;
|
||||||
|
public string id
|
||||||
|
{
|
||||||
|
get { return _id; }
|
||||||
|
set { _id = value; }
|
||||||
|
}
|
||||||
|
DateTime? UltimaUtilizacion;
|
||||||
|
public string Token {get;set;}
|
||||||
|
private GmailConfig _Config;
|
||||||
|
public GmailConfig Config
|
||||||
|
{
|
||||||
|
get { return _Config; }
|
||||||
|
set { _Config = value; }
|
||||||
|
|
||||||
|
}
|
||||||
|
public static List<TokenGmail> ListaTokens;
|
||||||
|
public static async Task<TokenGmail> ObtieneTokenAsync(string id)
|
||||||
|
{
|
||||||
|
if (ListaTokens ==null) throw new Exception("No se ha establecido la lista de tokens para poder enviar correos con Gmail");
|
||||||
|
var tk= ListaTokens.First(x=>x.id==id);
|
||||||
|
if (tk == null) throw new Exception("No se ha encontrado la configuración para la cuenta " + id);
|
||||||
|
|
||||||
|
if (!tk.UltimaUtilizacion.HasValue || DateTime.UtcNow.Subtract(tk.UltimaUtilizacion.Value).TotalMinutes > 0)
|
||||||
|
{
|
||||||
|
tk.Token = await GmailTokenManager.ObtenerAccessTokenAsync(tk.Config);
|
||||||
|
tk.UltimaUtilizacion = DateTime.UtcNow;
|
||||||
|
}
|
||||||
|
return tk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
22
Utilidades.cs
Normal file
22
Utilidades.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace tsCorreos
|
||||||
|
{
|
||||||
|
internal class Utilidades
|
||||||
|
{
|
||||||
|
public static string ObtieneDirectorioAleatorio()
|
||||||
|
{
|
||||||
|
string sDir = System.IO.Path.GetTempPath() + System.IO.Path.GetRandomFileName();
|
||||||
|
|
||||||
|
while (System.IO.Directory.Exists(sDir))
|
||||||
|
{
|
||||||
|
sDir = System.IO.Path.GetTempPath() + "\\" + System.IO.Path.GetRandomFileName();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.IO.Directory.CreateDirectory(sDir);
|
||||||
|
return sDir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
tsCorreos.csproj
Normal file
24
tsCorreos.csproj
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<RootNamespace>tsCorreos</RootNamespace>
|
||||||
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
|
<PackageId>tsCorreos</PackageId>
|
||||||
|
<PackageTags>netstandard2.0, libreria</PackageTags>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
<Authors>Manuel</Authors>
|
||||||
|
<Company>Tecnosis S.A</Company>
|
||||||
|
<Description>Envío de correos diferenciando Gmail del resto</Description>
|
||||||
|
<PackageReleaseNotes>
|
||||||
|
- 2025-09-18 Primera versión
|
||||||
|
</PackageReleaseNotes>
|
||||||
|
<!--<PackageReadmeFile>README.md</PackageReadmeFile>-->
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="tsGmail" Version="1.0.0" />
|
||||||
|
<PackageReference Include="tsZip" Version="1.0.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
25
tsCorreos.sln
Normal file
25
tsCorreos.sln
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36511.14 d17.14
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tsCorreos", "tsCorreos.csproj", "{755D1138-364A-4D7B-AE31-AE66B629F9C4}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{755D1138-364A-4D7B-AE31-AE66B629F9C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{755D1138-364A-4D7B-AE31-AE66B629F9C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{755D1138-364A-4D7B-AE31-AE66B629F9C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{755D1138-364A-4D7B-AE31-AE66B629F9C4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {2D880A2C-DB68-46CF-9084-3ECCCF6B9D78}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Reference in New Issue
Block a user