una servidor segura requiere net form enviar credenciales correo conexión con cliente autenticó asp archivo adjunto c# .net email push

servidor - enviar correo c# sin smtp



Notificar al cliente C#, cuando el servidor SMTP reciba un nuevo correo electrónico (3)

Quiero recibir todos los correos electrónicos en mi aplicación ASP.NET que tengan un determinado CC-destinatario. Para usar esto en futuros correos electrónicos no quise hacer encuestas todo el tiempo para obtenerlos. Pero no puedo encontrar una manera, cómo puedo usar push para recibir los correos instantáneamente. ¿Están sus marcos en C # para ayudarme en esto?

Quiero conectarme con mi aplicación a un servidor de correo y registrar un método ''X''. Siempre cuando llega un nuevo mensaje al servidor de correo, mi aplicación debe ser notificada y mi aplicación debe ejecutar el método ''X''.

Espero que esto sea posible con un código como este:

void Application_Start() { ... ConnectWithTheSmtpServer(); RegisterMethodForNotification(DoSomethink); ... } void DoSomethink(Mail newMail) { // Do Somethink with the mail }

EDITAR:

Lo hice con el MailSystem.Net . Funciona muy bien y es muy fácil de implementar.

Código de muestra:

void Application_Start() { var worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(StartIdleProcess); if (worker.IsBusy) worker.CancelAsync(); worker.RunWorkerAsync(); } private void StartIdleProcess(object sender, DoWorkEventArgs e) { if (_imap != null && _imap.IsConnected) { _imap.StopIdle(); _imap.Disconnect(); } _imap = new Imap4Client(); _imap.ConnectSsl(server-name, 993); _imap.Login(username, passwort); var inbox = _imap.SelectMailbox("INBOX"); _imap.NewMessageReceived += new NewMessageReceivedEventHandler(NewMessageReceived); inbox.Subscribe(); _imap.StartIdle(); } public static void NewMessageReceived(object source, NewMessageReceivedEventArgs e) { // Do something with the source... }


Puede enviar una copia de sus correos electrónicos (es decir, usar el archivo / etc / aliases en PostFix) a un SERVIDOR DE CORREO QUE PUEDE MANEJAR. Una vez allí, puede implementar un PROCESADOR DE CORREO que haga lo que quiera cada vez que llegue un correo que CONTIENE CIERTAS CONDICIONES.

Espero que ayude,


Puedes probar esto:

using System; using System.Collections.Generic; using System.Text; using System.IO; using EAGetMail; //add EAGetMail namespace namespace receiveemail { class Program { static void Main(string[] args) { // Create a folder named "inbox" under current directory // to save the email retrie enter code here ved. string curpath = Directory.GetCurrentDirectory(); string mailbox = String.Format("{0}//inbox", curpath); // If the folder is not existed, create it. if (!Directory.Exists(mailbox)) { Directory.CreateDirectory(mailbox); } // Gmail IMAP4 server is "imap.gmail.com" MailServer oServer = new MailServer("imap.gmail.com", "[email protected]", "yourpassword", ServerProtocol.Imap4 ); MailClient oClient = new MailClient("TryIt"); // Set SSL connection, oServer.SSLConnection = true; // Set 993 IMAP4 port oServer.Port = 993; try { oClient.Connect(oServer); MailInfo[] infos = oClient.GetMailInfos(); for (int i = 0; i < infos.Length; i++) { MailInfo info = infos[i]; Console.WriteLine("Index: {0}; Size: {1}; UIDL: {2}", info.Index, info.Size, info.UIDL); // Download email from GMail IMAP4 server Mail oMail = oClient.GetMail(info); Console.WriteLine("From: {0}", oMail.From.ToString()); Console.WriteLine("Subject: {0}/r/n", oMail.Subject); // Generate an email file name based on date time. System.DateTime d = System.DateTime.Now; System.Globalization.CultureInfo cur = new System.Globalization.CultureInfo("en-US"); string sdate = d.ToString("yyyyMMddHHmmss", cur); string fileName = String.Format("{0}//{1}{2}{3}.eml", mailbox, sdate, d.Millisecond.ToString("d3"), i); // Save email to local disk oMail.SaveAs(fileName, true); // Mark email as deleted in GMail account. oClient.Delete(info); } // Quit and purge emails marked as deleted from Gmail IMAP4 server. oClient.Quit(); } catch (Exception ep) { Console.WriteLine(ep.Message); } } } }


Te estás acercando a esto desde el ángulo equivocado.

SMTP no admite recibir correo (no importa el correo PUSH). POP3 es lo que puede usar para recuperar el correo, pero tampoco tiene soporte para PUSH (por lo que tendría que pedir el correo).

La extensión IDLE de IMAP4 es lo que más se conoce como correo PUSH, por lo que tendrá que encontrar una biblioteca para C # que admita IDLE de IMAP4. Encontré información que lo pondrá en la dirección correcta (no hay razón para duplicarlo aquí):

Tenga en cuenta al elegir una solución que necesita para soportar IDLE. Realmente me gusta el aspecto de MailSystem.Net ya que cumple con sus requisitos.

Recuerde que su servidor de correo también necesita tener habilitado IMAP4 e IMAP4 IDLE. Algunos servidores de correo no lo admiten, por lo que es posible que no tenga mucha suerte (y tendrá que usar la extracción de POP3).