Usuário com melhor resposta
foreach com List<>

Pergunta
-
Olá pessoal. Tenho um caso chato aqui.
Imaginem que em uma tabela para registrar os erros encontrados em um cadastro qualquer eu tenha os campos:
ID Nome Endereco Email DescErro TipoErro
Agora imaginem que eu queira enviar um email para o usuario com os erros encontrados, até ai seria muito simples, mas eu quero enviar apenas uma mensagem para o usuario com todos os erros de um determinado tipo, ou seja se houver um registro "Jorge" com 4 ocorrencias de um determinado tipo de erro, eu quero enviar as quatro ocorrencias em um mesmo email. ja tentei de várias maneiras, mas não consegui. se alguém puder me ajudar o meu ´código para esta rotina está assim:
public void BuiderMail(EventHandler<FindEventArgs> handlerFind, EventHandler<ItemProcessadoEventArgs> handlerEmail)
{
int enviados = 0;
int itensRestantes = 0;
string strNomeFantasia = string.Empty;
string strEmailAgrupar = string.Empty;
string strTipoObservacao = string.Empty;
string strObservacao = string.Empty;
string body = string.Empty;
List<ItemOfertaProblema> listObeservacao = new List<ItemOfertaProblema>();
List<ItemOfertaProblema> listObsGroup = new List<ItemOfertaProblema>();
ItemOfertaProblema[] itensOfertaProblema = Find();
ItemOfertaProblema[] itensOfertaProblemaGroup = Find();
Imovelweb.FindEventArgs e = new Imovelweb.FindEventArgs(itensOfertaProblema.Length);
itensRestantes = e.TotalItems;
handlerFind(null, e);
int count = 0;
int inte = 0;
foreach (ItemOfertaProblema item1 in itensOfertaProblema)
{
strTipoObservacao = MakeMessageMail.GetBodyTipo(item1.Observacao, ref inte);
count++;
bool adicionar = true;
foreach (ItemOfertaProblema item2 in itensOfertaProblemaGroup)
{
if (item1.Observacao == item2.Observacao)
{
adicionar = true;
break;
}
}
if (adicionar)
{
listObsGroup.Add(item1);
}
}
foreach (ItemOfertaProblema item in itensOfertaProblemaGroup)
{
strNomeFantasia = item.NomeFantasia;
strEmailAgrupar = item.Email;
listObsGroup.Add(item);
body = MakeMessageMail.GetMakeMailHeader();
body += MakeMessageMail.GetMakeMailMiddle(item);
body += MakeMessageMail.GetMakeMailButton();
body = MakeMessageMail.MakeMailBody(strNomeFantasia, strTipoObservacao, body);
SendMail(ConfigStateOfertaProblema.SMTP, ConfigStateOfertaProblema.FromAddress, ConfigStateOfertaProblema.FromDisplayName, strEmailAgrupar, strNomeFantasia, body, ConfigStateOfertaProblema.Subject);
}
enviados++;
itensRestantes--;
handlerEmail(null, new Imovelweb.ItemProcessadoEventArgs(enviados, itensRestantes));
}
Alguém pode me audar? Desde já agradeço!!
Respostas
-
ola, bom o que você pode utilizar é a variavel text.StringBulder , aonde você acumula as menssagem por linhas e envia tudo junto em um só email.. segue um ex.
Dim
Sb As Text.StringBuilder = New Text.StringBuilder() For Each dr As Data.DataRow In Dt.RowsSb.Append(
"OBS:")
Sb.Append(dr("Item").ToString())
Sb.Append(" Nome :")
Sb.Append(dr("Nome").ToString())
Sb.AppendLine() 'fechar linhaNext
' enviar email com a variavel com as msn acumuladas ( sb.ToString )
"", "", vsubject, Sb.ToString, vSMTP)
Email.EnviaMensagemEmail(vFrom, vEmailFinanceiro,
é isso ai
inté;
Rafael N. Miranda- Sugerido como Resposta Rafael Nunes de Miranda - Desenvolvedor .NET segunda-feira, 16 de março de 2009 17:09
- Marcado como Resposta Aleksandro Almeida terça-feira, 17 de março de 2009 12:39
Todas as Respostas
-
ola, bom o que você pode utilizar é a variavel text.StringBulder , aonde você acumula as menssagem por linhas e envia tudo junto em um só email.. segue um ex.
Dim
Sb As Text.StringBuilder = New Text.StringBuilder() For Each dr As Data.DataRow In Dt.RowsSb.Append(
"OBS:")
Sb.Append(dr("Item").ToString())
Sb.Append(" Nome :")
Sb.Append(dr("Nome").ToString())
Sb.AppendLine() 'fechar linhaNext
' enviar email com a variavel com as msn acumuladas ( sb.ToString )
"", "", vsubject, Sb.ToString, vSMTP)
Email.EnviaMensagemEmail(vFrom, vEmailFinanceiro,
é isso ai
inté;
Rafael N. Miranda- Sugerido como Resposta Rafael Nunes de Miranda - Desenvolvedor .NET segunda-feira, 16 de março de 2009 17:09
- Marcado como Resposta Aleksandro Almeida terça-feira, 17 de março de 2009 12:39
-