/// <summary> /// get instance name from "Received" header like "by mail8-tx2.bigfish.com (Postfix) with ESMTP id CC36D220440 for <*****@*****.**>; Sun, 25 Mar 2012 12:14:44 +0000 (" /// used for hosted instance only /// </summary> public static int?GetInstanceIdByEmailHeaders(Limilabs.Mail.Headers.HeaderCollection headers) { Regex addressRegex1 = new Regex(@"@([a-zA-Z0-9_\-]+)\.jitbit\.com", RegexOptions.IgnoreCase); Match mName = null; string receivedHeaders = headers["received"] ?? headers["Received"]; if (receivedHeaders != null) { mName = addressRegex1.Match(receivedHeaders); //seeking "***@***.jitbit.com" in the headers string } if (receivedHeaders == null || !mName.Success) //not found in "received" lets look at "ogirignal to" header { string xOriginalTo = headers["X-Original-To"] ?? headers["x-original-to"]; if (xOriginalTo == null) { return(null); } mName = addressRegex1.Match(xOriginalTo); //seeking "***@***.jitbit.com" in the headers string AGAIN if (!mName.Success) { return(null); } } using (SqlConnection cn = DBUtils.GetNewOpenConnection()) { string instanceName = mName.Groups[1].Value; int?instanceId = cn.Query <int?>("SELECT InstanceID FROM Instances WHERE Name=@Name", new { Name = instanceName }).FirstOrDefault(); if (instanceId.HasValue) { return(instanceId); } } return(null); }
private static bool IsUselessMessage(string from, string fromName, string subject, Limilabs.Mail.Headers.HeaderCollection headers) { //caching string lSubject = (subject == null ? "" : subject.ToLower()); string lFrom = (from == null ? "" : from.ToLower()); string lFromName = (fromName == null ? "" : fromName.ToLower()); bool useless = lSubject.IndexOf("delivery status") > -1 || lSubject.Contains("delivery has failed") || lSubject.Contains("out of office") || lSubject.Contains("out of the office") || lSubject.Contains("out-of-office"); useless |= lSubject.StartsWith("automatic reply") || lSubject.StartsWith("[auto-reply]") || lSubject.StartsWith("automatische antwort") || lSubject.StartsWith("automatisch antwoord") || lSubject.StartsWith("respuesta automática"); useless |= (lFrom.IndexOf("mailer-daemon") > -1 || lFrom.StartsWith("postmaster@")); useless |= (lFromName.IndexOf("mail delivery subsystem") > -1); useless |= (headers != null) && (headers.AllKeys.Contains("X-Failed-Recipients") || headers.AllKeys.Contains("x-failed-recipients")); useless |= (headers != null) && (headers.AllKeys.Contains("X-Autoreply") || headers.AllKeys.Contains("x-autoreply")); useless |= (headers != null) && (headers.AllKeys.Contains("X-Autorespond") || headers.AllKeys.Contains("x-autorespond")); useless |= rPusherEmail.IsMatch(lFrom); //email came from the hosted helpdesk? //sometimes header names are converted to lowercase... AND I SPENT FRIGGIN WEEK DEBUGGIN THIS! F**K! .. uhm, sory if (!useless && headers != null) { string xmailerHeader = ""; if (headers.AllKeys.Contains("X-Mailer")) { xmailerHeader = headers["X-Mailer"]; } if (headers.AllKeys.Contains("x-mailer")) { xmailerHeader = headers["x-mailer"]; } useless = xmailerHeader.ToLower().IndexOf("jitbit") > -1; } return(useless); }