如何从 C# 代码重新启用 Gmail 中的弹出功能?

How can re enable pop in Gmail from C# code?(如何从 C# 代码重新启用 Gmail 中的弹出功能?)
本文介绍了如何从 C# 代码重新启用 Gmail 中的弹出功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I have a program that downloads mails from my Gmail, i have selected the radio button : Enable POP for all mail (even mail that's already been downloaded)

After i download my mail my Gmail changes the status above to: POP is enabled for all mail that has arrived since current Date

I did not physical change the radio buttons but it seams like it auto sets it to download only new mail.

I need my windows to down load all my all the time.

How can i set in my code that Gmails must enable all downloads all the time? with out me having to go re select the radio button every time.


Windows Service

 namespace EmailWindowsService
{
    public partial class MyEmailService : ServiceBase
    {
        private static System.Timers.Timer aTimer; //Create a timer
        public MyEmailService()
        {
            InitializeComponent();
            if (!System.Diagnostics.EventLog.SourceExists("MySource")) // Log every event
            {
                System.Diagnostics.EventLog.CreateEventSource(
                    "MySource", "MyNewLog"); // Create event source can view in Server explorer
            }
            eventLogEmail.Source = "MySource";
            eventLogEmail.Log = "MyNewLog";
            // Timer Code
             aTimer = new System.Timers.Timer(1 * 60 * 1000); // 60 seconds
             aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); // Call time elapsed event
             aTimer.Enabled = true;
            // Timer Code
        }
        protected override void OnStart(string[] args)
        {
            eventLogEmail.WriteEntry("Started");
        }
        protected override void OnStop()
        {
            eventLogEmail.WriteEntry("Stopped");
        }
        protected override void OnPause()
        {
            eventLogEmail.WriteEntry("Paused");
        }
        protected override void OnContinue()
        {    
            eventLogEmail.WriteEntry("Continuing");
        }
        protected override void OnShutdown()
        {
            eventLogEmail.WriteEntry("ShutDowned");
        }
        private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            clsRetriveEmail Emails = new clsRetriveEmail();
            eventLogEmail.WriteEntry("Populateing database with mail"); // log event
            Emails.EmailGetList(); // Call class
        }       
        }
    }


Class

namespace EmailWindowsService
{
    class clsRetriveEmail
    {
        public void EmailGetList()
        {          
            using (Pop3Client objClient = new Pop3Client())
            {
                //Athentication This is stored in the app.config file
                objClient.Connect(Properties.Settings.Default.mailServer, Properties.Settings.Default.port, Properties.Settings.Default.ssl); // mailserver eg gmail is pop.gmail.com, Port common ports 995 110 sll Security best to set to true
                objClient.Authenticate(Properties.Settings.Default.username, Properties.Settings.Default.password);  // Email Address and password
                //Count Emails and begin Looping though them
                int emailCount = objClient.GetMessageCount();
                for (int i = emailCount; i >= 1; i--)
                {
                   OpenPop.Mime.Message msg = objClient.GetMessage(i); //Get message Number. Message decleard as msg
                    //Set the values to throw into Database
                   int emailID = i;
                   String emailTo = Properties.Settings.Default.username;
                   String emailFrom = msg.Headers.From.Address;
                   String emailSubject = msg.Headers.Subject;
                   DateTime emailSentDate = msg.Headers.DateSent;
                    // The connection String can be changed in the app.config file
                    // Connect to database
                    using (var conn = new SqlConnection(Properties.Settings.Default.dbConnectionString))
                    using (var cmd = conn.CreateCommand())
                    {
                            // Writes to database (local) instance
                            conn.Open();
                            cmd.CommandText = "EmailLogFill";
                            cmd.CommandType = CommandType.StoredProcedure;
                            cmd.Parameters.AddWithValue("@id", emailID);
                            cmd.Parameters.AddWithValue("@to", emailTo);
                            cmd.Parameters.AddWithValue("@from", emailFrom);
                            cmd.Parameters.AddWithValue("@subject", emailSubject);
                            cmd.Parameters.AddWithValue("@date", emailSentDate);
                            cmd.ExecuteNonQuery();
                    }
                }
            }
        }
    }
}

解决方案

You don't need to re enable the radio button, when a pop client downloads the mail, it cant be view by other pop clients. How outlook does this is by using the recent mode.

Try this its not all your mail but the last 30 days.

Just Add recent: to your username e.g recent:Me@gmail.com.

Recent mode fetches the last 30 days of mail, regardless of whether it's been sent to another POP1 client already.

Link to back it up.

http://support.google.com/mail/bin/answer.py?hl=en&answer=47948

这篇关于如何从 C# 代码重新启用 Gmail 中的弹出功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)