Nagłówek mail - nazwa komputera nadawcy.

0

Witam.

Kombinuje z napisaniem aplikacji do pewnej automatyzacji odbierania maili.
Nie orientuje się za bardzo w budowie maila szczerze mówiąc dlatego zwracam się do Was o pomoc.
Podglądając źródło maila (odebranego) mam coś takiego:

Return-path: <[email protected]>
Envelope-to: [email protected]
Delivery-date: Wed, 02 Dec 2015 12:45:31 +0100
Received: from [95.210.21.112] (helo=JAN-KOWALSKI)
	by serwer.com with esmtpa (Exim 4.82)
	(envelope-from <[email protected]>)
	id 2b65yk-0001RH-DZ; Wed, 02 Dec 2015 12:45:31 +0100
MIME-Version: 1.0

Interesuje mnie część helo=JAN-KOWALSKI czyli nazwa komputera z którego została wysłana wiadomość.
Pobierając maile za pomocą bilbioteki S22.Imap (https://github.com/smiley22/S22.Imap) w Received w nagłówku mam coś takiego:
from [95.210.21.112] by serwer.com with esmtpa (Exim 4.82) (envelope-from <[email protected]>) id 2b65yk-0001RH-DZ; Wed, 02 Dec 2015 12:45:31 +0100
czyli istotna dla mnie część jest pominięta z jakiegoś powodu - no właśnie: jaki może być powód i jak się dobrać do tej informacji?

Pobierając wiadomości za pomocą bilbioteki OpenPop.NET bez problemu mogłem odczytać te informacje (jednak potrzebuje IMAP stąd zmiana biblioteki).

Z góry dziękuję za pomoc.

1

masz źródła więc zobacz co zwraca serwer - w pliku ImapClient.cs postaw breakpointa przy GetMailHeader i zobacz co zwraca serwer i czy interesująca Cię część nie jest po porostu zwracana czy z jakiegoś powodu ignorowana. BTW masz źródła więc jak coś nie działa to popraw i tyle

0

Czasami najprostsze rozwiązania są najlepsze ;).
@abrakadaber - znalazłem, poprawiłem - działa. Dziękuję :].

1

Wygląda na to, że to zamierzone działanie autora, więc wstawię tutaj:
Gdyby ktoś potrzebował aby w Headers -> Received była informacja (helo=.....), najprościej w metodzie ParseMailHeader (plik MessageBuilder.cs) w wykluczeniach dodać Received czyli:

		/// <summary>
		/// Parses the mail header of a mail message and returns it as a NameValueCollection.
		/// </summary>
		/// <param name="header">The mail header to parse.</param>
		/// <returns>A NameValueCollection containing the header fields as keys with their respective
		/// values as values.</returns>
		internal static NameValueCollection ParseMailHeader(string header) {
			StringReader reader = new StringReader(header);
			NameValueCollection coll = new NameValueCollection();
			string line, fieldname = null, fieldvalue = null;
			var exclude = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase) {
				"Subject", "Comments", "Content-disposition", "User-Agent", "Received" };
			while ((line = reader.ReadLine()) != null) {
				if (line == String.Empty)
					continue;
				// Values may stretch over several lines.
				if (line[0] == ' ' || line[0] == '\t') {
					if (fieldname != null)
						coll[fieldname] = coll[fieldname] + line.TrimEnd();
					continue;
				}
				// The mail header consists of field:value pairs.
				int delimiter = line.IndexOf(':');
				if (delimiter < 0)
					continue;
				fieldname = line.Substring(0, delimiter).Trim();
				fieldvalue = line.Substring(delimiter + 1).Trim();
				// Strip comments from RFC822 and MIME fields unless they are unstructured fields.
				if (!exclude.Contains(fieldname))
					fieldvalue = StripComments(fieldvalue);
				coll.Add(fieldname, fieldvalue);
			}
			return coll;
		}

1 użytkowników online, w tym zalogowanych: 0, gości: 1