2016-11-20 20 views
0

我試圖讀取電子郵件的主體,但在我的DataGridView我只有兩條消息,有一個信息:「對象引用不設置到對象的實例」OpenPop機身C#

private DataTable dt; 
private Pop3Client client = new Pop3Client(); 

private void button11_Click(object sender, EventArgs e) 
{ 
    dt = new DataTable("Inbox"); 
    dt.Columns.Add("Subject"); 
    dt.Columns.Add("Sender"); 
    dt.Columns.Add("Body"); 
    dt.Columns.Add("Time"); 
    dataGridView1.DataSource = dt; 

    try 
    {    
     client.Connect("pop-mail.outlook.com", 995, true); 
     client.Authenticate(textBox6.Text, textBox5.Text); 
     var count = client.GetMessageCount(); 
     int messageCount = client.GetMessageCount(); 
     for (int i = count; i >= 1; i -= 1) 
     { 
      OpenPop.Mime.Message message = client.GetMessage(i);     
      OpenPop.Mime.MessagePart messagePart = message.MessagePart.MessageParts[1]; 

      string test = messagePart.BodyEncoding.GetString(messagePart.Body); 

      dt.Rows.Add(new object[] { message.Headers.Subject, message.Headers.Sender, test, message.Headers.DateSent }); 
     }    
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

您的問題是? – Sebi

+0

我如何解決它以查看所有消息沒有「對象引用未設置爲對象的實例」? – Ops

+1

在哪條線上出現此錯誤?如果您訪問由空值組成的引用,就會發生這種情況。例如message = null; message.MessagePart會觸發System.NullReferenceException。 – Sebi

回答

0

請確保您的郵件對象不爲空檢查爲空

OpenPop.Mime.Message message = client.GetMessage(i); 
//Check you message is not null 
if(message != null){ 
    OpenPop.Mime.MessagePart messagePart = message.MessagePart.MessageParts[1]; 

    string test = messagePart.BodyEncoding.GetString(messagePart.Body); 

    dt.Rows.Add(new object[] { message.Headers.Subject, message.Headers.Sender, test, message.Headers.DateSent }); 
}