Notificações Estilo Emails assíncronas
13/06/2013
0
Renato Pereira
Posts
13/06/2013
Paulo Freire
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>
14/06/2013
Renato Pereira
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!
14/06/2013
Joel Rodrigues
setInterval(atualizaNotificacoes(), 2000);
Deixando apenas:
setInterval(atualizaNotificacoes, 2000);
14/06/2013
Joel Rodrigues
Um grande abraço.
Estou encerrando o tópico.
15/06/2013
Renato Pereira
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!
15/06/2013
Joel Rodrigues
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.
Clique aqui para fazer login e interagir na Comunidade :)