Array
(
)

Notificações Estilo Emails assíncronas

Renato
|
MVP
Pontos: 1000
    13 jun 2013

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

Paulo Freire
|
MVP
    13 jun 2013

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>

0
|
0

Renato
|
MVP
Pontos: 1000
    14 jun 2013

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!

0
|
0

Joel Rodrigues
   - 14 jun 2013

Experimente remover os parênteses do nome da função, na seguinte linha:
#Código

setInterval(atualizaNotificacoes(), 2000);

Deixando apenas:
#Código
setInterval(atualizaNotificacoes, 2000);

0
|
0

Renato
|
MVP
Pontos: 1000
    14 jun 2013

Funcionou, muito obrigado, Joel Rodrigues!

0
|
0

Joel Rodrigues
   - 14 jun 2013

Que bom, amigo.
Um grande abraço.

Estou encerrando o tópico.

0
|
0

Renato
|
MVP
Pontos: 1000
    15 jun 2013

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!

0
|
0

Joel Rodrigues
   - 15 jun 2013

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.

0
|
0