%@ WebHandler Language="C#" Class="Enviar" %>
using System;
using System.Web;
using System.Net;
using System.Web.Configuration;
using System.Web.SessionState;
public class Enviar : IHttpHandler, IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
Intranet.Users intranetUser;
try
{
int Id = Convert.ToInt16(context.Request.QueryString["id"].ToString());
// UTILIZADOR AUTENTICADO
intranetUser = (Intranet.Users)context.Session["intranetUser"];
// NEWSLETTER A ENVIAR
string newsletterHTML = new WebClient().DownloadString(System.Web.Configuration.WebConfigurationManager.AppSettings["newsletter"] + "?id=" + Id);
// ENDEREÇOS SUBSCRITOS
string[] subscricoes = SiteECom.Newsletter.Subscricoes.Listagem();
// Criar grupo dentro os servidores de e-mail da NERSANT
// Este domínio já tem de estar criado no servidor (grupos.plataformaongd.pt)
string alias = "newsletter@grupos.plataformaongd.pt";
Intranet.Qmail.Abrantes.CriarGrupo(alias, subscricoes);
Intranet.Qmail.Sede.CriarGrupo(alias, subscricoes);
// ENVIO
bool enviado = false;
Intranet.Notificacao newsletter = new Intranet.Notificacao(System.Web.Configuration.WebConfigurationManager.AppSettings["newsletter_from"].ToString(),
new string[] { alias },
"NEWSLETTER N." + SiteECom.Newsletter.Detalhes(Id).Rows[0]["titulo"].ToString());
newsletter.Mensagem = newsletterHTML;
enviado = newsletter.Enviar();
// Envio 1 a 1
/*
newsletter.Destinatarios.Remover(subscricoes);
foreach (string email in subscricoes)
{
newsletter.Destinatarios.Adicionar(email);
enviado = newsletter.Enviar();
newsletter.Destinatarios.Remover(email);
context.Response.Write("Enviado para: " + email);
}
*/
// CRIAR LOG
string _status = "";
if (enviado)
{
_status = "Enviado para " + subscricoes.Length + " endereço(s) com sucesso.";
SiteECom.Newsletter.Log.Adicionar(Id,
newsletterHTML,
_status,
intranetUser.ID,
intranetUser.Departamento.ID);
_status = "Enviado para " + subscricoes.Length + " endereço(s) com sucesso.";
}
else
{
_status = "Erro no envio de newsletter: " + subscricoes.Length + " endereços.";
SiteECom.Newsletter.Log.Adicionar(Id,
newsletterHTML,
_status,
intranetUser.ID,
intranetUser.Departamento.ID);
_status = "Erro no envio de newsletter: " + subscricoes.Length + " endereços.";
}
context.Response.Write(_status);
}
catch (Exception)
{
context.Response.Write("ERRO");
}
}
public bool IsReusable
{
get
{
return false;
}
}
}