Чтение почты из Gmail с помощью IMAP
Здравствуйте друзья,
Я получаю почту из Gmail с помощью IMAP (в службе Windows), которая работает в фоновом режиме.
Но когда цикл начинает получать почту, он читает всю почту с самого начала. Но я хочу, чтобы он читал почту в соответствии с текущей датой.
Какой запрос следует использовать для этого, чтобы время отклика было меньше.
Я использую это
//код
public void mail() { string date = Convert.ToString(DateTime.Today); Imap client = new Imap(); // connect to server client.Connect("imap.gmail.com", 993, SslMode.Implicit); // authenticate client.Login("abc@gmail.com", "abc123456"); // select folder client.SelectFolder("Inbox"); ImapMessageCollection messages = client.GetMessageList(ImapListFields.Envelope); if (con.State != ConnectionState.Open) { con.Open(); } foreach (ImapMessageInfo message in messages) { // string todaydate = DateTime.Now.ToString("dd/MM/yyyy"); if (message.Date.LocalTime.ToShortDateString() == DateTime.Now.Date.ToShortDateString()) { Insert_mail(message.UniqueId, message.Sender.ToString(), message.To.ToString(), message.Subject, message.Date.LocalTime, client.GetMailMessage(message.SequenceNumber).BodyText,message.HasBodyHtml); } } if (con.State == ConnectionState.Open) { con.Close(); } }
public void Insert_mail(string Uid, string from, string to, string subject, DateTime datetime, string message) { try { MySqlCommand cmd = new MySqlCommand(); cmd.Parameters.AddWithValue("@unique_id", Uid); cmd.Parameters.AddWithValue("@sender", from); cmd.Parameters.AddWithValue("@reciever", to); cmd.Parameters.AddWithValue("@subject", subject); cmd.Parameters.AddWithValue("@date", datetime); cmd.Parameters.AddWithValue("@message", message); cmd.Parameters.AddWithValue("@mail_status", "unread"); cmd.Connection = con; string query = "Insert Ignore into gmail_inbox(unique_id,sender,reciever,subject,date,message,mail_status) values (@unique_id,@sender,@reciever,@subject,@date,@message,@mail_status) "; cmd.CommandText = query; cmd.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { } }
Prasad Khandekar
Привет Нитеш,
Вы разместили код для вставки.
Neetesh Agarwal
Да , bcz после чтения почты из IMap мне нужно хранить в базе данных. И я хочу , чтобы его выборка была только текущей, что Почта, я использовал условие IF в начале кода, как вы можете видеть, но я знаю, что это не очень хорошо. Пожалуйста, предложи мне что-нибудь.