Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2022
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Entrada de correo

Buenas:

En modo consola puedo enviar correo electrónico, cuyo código fuente lo dejo abajo para que lo vean. Solo puede enviar mensajes o e-mail, funciona muy bien.

Ahora quiero hacer otro programa, que solo lee email también en modo consola y los e-mail que tanga filtrado, si tengo tres e-mail filtrados, pues solo acepta esos e-mail en pantalla. Todo esto, lee un mensaje por cada 5 minutos. Mensaje, Asunto y la dirección del e-mail.

¿Cómo se hace?

Aquí abajo dejo el codigo de enviar e-mail por consola que funciona al 100 %, con tildes, ñ y otros símbolos correctamente a parte de enviar más de 255 caracteres.

Para que funcione y se usa gmail.

// Activar / desactivar Acceso de aplicaciones poco seguras en Google.
https://myaccount.google.com/lesssecureapps

Código C#:
Código:
using System;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Text;

namespace Enviar_email_Consola_07
{
    internal class Program
    {
        static void Main(string[] args)
        {
            

            // Variables.
            string usuario, contraseña, destinatario, asunto, mensaje;
            const int MAXIMA_LONGITUD = 40000;

            #region Configuración ventana.
            // Título de la ventana.
            Console.Title = "Gestor correo electrónico";

            // Tamaño de la ventana, x, y, o ancho y alto.
            const byte ancho = 80;
            const byte alto = 25;
            Console.SetWindowSize(ancho, alto);

            // Color de fondo.
            Console.BackgroundColor = ConsoleColor.Black;

            // Color de las letras.
            Console.ForegroundColor = ConsoleColor.Gray;

            // Limpiar pantalla y dejarlo todo en color de fondo.
            Console.Clear();

            // Visible el cursor.
            Console.CursorVisible = true;
            #endregion

            // Título del programa.
            Console.WriteLine("\t\t----------------------------------------");
            Console.WriteLine("\t\t\tEnviar Correo Electrónico");
            Console.WriteLine("\t\t----------------------------------------");

            try
            {
                
                Console.WriteLine("\n");
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tTu correo electrónico: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                usuario = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tIntroducir contraseña: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                contraseña = LeerPassword();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tDestinatario: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                destinatario = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tAsunto: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                asunto = Console.ReadLine();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.Write("\t\tMensaje: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                //mensaje = Console.ReadLine();

                #region Enviar más de 255 caracteres.
                // #########################################################################
                Stream inputStream = Console.OpenStandardInput();
                byte[] buffer = new byte[MAXIMA_LONGITUD];
                int numerosBytesLeidos = inputStream.Read(buffer, 0, MAXIMA_LONGITUD);
                char[] chars = Console.InputEncoding.GetChars(buffer, 0, numerosBytesLeidos);
                mensaje = new string(chars);
                // #########################################################################
                #endregion

                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.DarkCyan;
                Console.Write("\t\tCantidad de texto introducido: ");
                Console.ForegroundColor = ConsoleColor.Gray;
                Console.WriteLine(mensaje.Length);

                MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje)
                {
                    // Enviar textos con tildes.
                    BodyEncoding = Encoding.UTF8
                };

                SmtpClient servidor = new SmtpClient("smtp.gmail.com")
                {
                    Port = 587
                };
                NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
                servidor.Credentials = credenciales;
                servidor.EnableSsl = true;

                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("\t\tEnviando correo...");
                servidor.Send(correo);
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\t\tCorreo enviado satisfactoriamente.");
                correo.Dispose();
                Console.CursorVisible = false;
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("ERROR: \n");
                Console.WriteLine("\t\t" + ex.Message);
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine("\t\tNo se ha enviado el correo.");
                Console.ReadKey();
            }

        }

        // A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla.
        public static string LeerPassword()
        {
            ConsoleKeyInfo cki;
            StringBuilder sb = new StringBuilder();
            int contador = 0;

            do
            {
                cki = Console.ReadKey(true);
                if (cki.Key != ConsoleKey.Enter)
                {

                    sb.Append(cki.KeyChar);
                    if (contador < 1)
                    {
                        Console.Write("*");
                    }
                    contador++;
                }

                else
                {
                    break;
                }

            } while (true);
            Console.WriteLine();
            return sb.ToString();
        }
    }
}
Feliz año 2.022.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #2  
Antiguo 10-01-2022
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Para leer mails de un servidor, necesitas implementar un cliente POP3. Existe mas de una librería de código abierto que te permite esto, acá te dejo un link para que investigues: http://hpop.sourceforge.net/examples.php

Saludos.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Entrada RA0, salida RB0 REHome ASM y Microcontroladores 2 02-03-2008 18:21:48
ENVIAR CORREO mi cuenta de correo es GMAIL ASAPLTDA PHP 1 16-11-2006 00:54:03
Problemas al Enviar Correo con Ciertas Dir. de Correo AGAG4 Internet 2 01-02-2006 20:37:42
Dll y puntos de entrada chete Varios 1 11-01-2006 13:20:28


La franja horaria es GMT +2. Ahora son las 19:13:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi