Notificações Estilo Emails assíncronas

13/06/2013

0

Alguém tem alguma sugestão de como fazer um esquema de notificações assíncronas no website tipo e-mail?
Renato Pereira

Renato Pereira

Responder

Posts

13/06/2013

Paulo Freire

Coisa básica ok:



private void RunEmailSender()
{
// Always keep running.
while (true)
{
System.Threading.Thread.Sleep(43200000); //Tempo

try
{
EnviarEmails();
}
catch (Exception ex)
{
// Log any exceptions here
}
}
}


public void EnviarEmails()
{

string bodyHTML = string.Empty;
string bodyPlain = string.Empty;
System.Net.Mail.MailMessage mailMsg = new System.Net.Mail.MailMessage();
System.Net.Mail.MailAddress mailAddress = new System.Net.Mail.MailAddress("comunicacao@comandomilitar.mil.br");
mailMsg.Subject = txtAssunto.Text;
mailMsg.IsBodyHtml = true;
bodyHTML = txtMensagem.Text;

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(bodyHTML, null, "text/html");
AlternateView plainView = AlternateView.CreateAlternateViewFromString(bodyPlain, null, "text/plain");
mailMsg.AlternateViews.Add(htmlView);
mailMsg.AlternateViews.Add(plainView);

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

smtp.Port = 25;
//smtp.Host = "smtp-web.kinghost.net"; //Servidor SMTP
smtp.Host = "10.10.0.2"; //Servidor SMTP

smtp.EnableSsl = false;

EntitiesQG db = new EntitiesQG();



var pesquisa = from m in db.OFICIAIS
where m.EMAIL != "" && m.ATIVO == 1
orderby m.NOME
select new
{
m.NOME,
m.EMAIL
};


foreach (var m in pesquisa)
{
mailMsg.From = mailAddress;
mailMsg.To.Clear();
mailMsg.To.Add(m.EMAIL.ToString());

smtp.Send(mailMsg);
}
}




No seu WebConfig

<mailSettings>
<smtp>
<network host="smtp.seusmtp.mil.br" port="25" userName="comunicacao@comandomilitar.mil.br" password="seu_senha" />
</smtp>
</mailSettings>
Responder

14/06/2013

Renato Pereira

Você não entendeu!
Não é envio de emails. Eu queria criar um esquema de notificações assíncronas de modo que mostre ao usuário o seu número de tarefas a fazer, tarefas a finalizar, etc.
Eu ja tentei fazer com:

<script type="text/javascript">
function atualizaNotificacoes() {
$.ajax({
url: "/Requisicao/AtualizaNotificacoes",
type: "POST",
success: function (retorno) {
if (retorno.error != 0) {

// var tpv = $('#tpv').val();
// var tppb = $('#tppb').val();
// var tppp = $('#tppp').val();
// var tppd = $('#tppd').val();
// var rpf = $('#rpf').val();
//
// if (retorno.tpv > tpv) $('#tpv').innerHTML = tpv;
// if (retorno.tppb > tppb) $('#tppb').innerHTML = tppb;
// if (retorno.tppp > tppp) $('#tppp').innerHTML = tppp;
// if (retorno.rpf > rpf) $('#rpf').innerHTML = rpf;

alert(retorno.tpv + retorno.tppb + retorno.tppp + retorno.rpf);
}
},
error: function (erro) {
},
complete: function () {
}
});
}

$(document).ready(function () {
setInterval(atualizaNotificacoes(), 2000);
});
</script>

tentei ficar disparando isso assincronamente, mas esse setInternal javascript não ta funcionando!
Mas vlw pela ajuda, obrigado!
Responder

14/06/2013

Joel Rodrigues

Experimente remover os parênteses do nome da função, na seguinte linha:
setInterval(atualizaNotificacoes(), 2000);

Deixando apenas:
setInterval(atualizaNotificacoes, 2000);
Responder

14/06/2013

Renato Pereira

Funcionou, muito obrigado, Joel Rodrigues!
Responder

14/06/2013

Joel Rodrigues

Que bom, amigo.
Um grande abraço.

Estou encerrando o tópico.
Responder

15/06/2013

Renato Pereira

Olá Joel Rodrigues, bom dia!
Você já implementou logs de controle de acesso em algum website?
eu estava tentando fazer da seguinte maneira:
Quando o usuário loga, grava-se sua hora de entrada, IP de origem, Host de Origem, IdUsuario.
E quando o usuário desloga, Atualiza-se a hora de saída.
Estou utilizando ASP.NET MVC e Entity Framework.

A tabela no banco de dados ficou assim:
int Id
int IdUsuário
Datetime horaLogon
Datetime horaLogoff
nvarchar(MAX) IPorigem
nvarchar(MAX) HostOrigem

Na implementação, utilizei um script no Layout master page do website
cujo evento refere-se ao descarregamento da pagina para quando o usuário fechar o brownser, gravar a hora de saída tbm, cujo nome do mesmo
onbeforeunload, ou onunload, ou beforeunload. Acontece que esse evento auto dispara
em qualquer evento ocorrido na página, como click de uma ancora, F5, CTRL + R, CTRL + F5, o script dispara esse eventos com o servidor.
Você tem alguma solução ou método para implementar esse problema?
Obrigado pela Atenção!
Responder

15/06/2013

Joel Rodrigues

Amigo, abra um tópico para esse assunto, pode ser?
Pois fica mais organizado e se alguém tiver a mesma dúvida, é mais fácil de localizar a solução pelo título do tópico.

Abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar