[Gmail] Filteren op verzendende mailserver

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • pven
  • Registratie: Oktober 1999
  • Niet online
Ik krijg regelmatig mail geforward van, laten we zeggen, mailserver mail.xyz.nl. Nu wil ik een filter maken zodat ik mail die via deze mailserver is verzonden kan labelen. De verzender kan overigens verschillen, mail via mailserver.xyz.nl kan best van pietje@abc.nl afkomstig zijn.

Ik kom hier niet aan uit. Iets als: received-from ofzo werkt niet. Deze pagina helpt mij ook niet verder.

Kortom mijn vraag: kan ik filteren op de verzendende mailserver?

|| Marktplaats-meuk. Afdingen mag! ;-) || slotje.com for sale || Dank pven! ||

Beste antwoord (via pven op 05-09-2018 11:56)


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Voor de zekerheid: je gebruikt de gratis webmail en de Google mailserver? (Dus niet Google Apps en eventueel een tussenliggende server).

Ik denk dat je met Google script de mail headers wel kunt uitlezen - en dan via het script de mails verplaatsen/voorzien van labels.

Edit: yup.
Create script for Gmail
[..]
function processInbox() {
// process all recent threads in the Inbox (see comment to this answer)
var threads = GmailApp.search("newer_than:1h");
for (var i = 0; i < threads.length; i++) {
// get all messages in a given thread
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
processMessage(message);
}
}
}
[..]
function processMessage(message) {
var body = message.getRawContent();
if (body.indexOf("X-Custom-Header: some-custom-value") > -1) {
// do stuff with message (e.g. add label)
}
}

[...]

My unproven gut reaction is that google will have something in place to stop users looping through gigs worth of raw email content every minute. So I'd advise to replace " var threads = GmailApp.getInboxThreads();" with " var threads = GmailApp.search("newer_than:1h");" – Rick Jul 31 '15 at 21:06

[ Voor 67% gewijzigd door F_J_K op 05-09-2018 10:06 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Voor de zekerheid: je gebruikt de gratis webmail en de Google mailserver? (Dus niet Google Apps en eventueel een tussenliggende server).

Ik denk dat je met Google script de mail headers wel kunt uitlezen - en dan via het script de mails verplaatsen/voorzien van labels.

Edit: yup.
Create script for Gmail
[..]
function processInbox() {
// process all recent threads in the Inbox (see comment to this answer)
var threads = GmailApp.search("newer_than:1h");
for (var i = 0; i < threads.length; i++) {
// get all messages in a given thread
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
processMessage(message);
}
}
}
[..]
function processMessage(message) {
var body = message.getRawContent();
if (body.indexOf("X-Custom-Header: some-custom-value") > -1) {
// do stuff with message (e.g. add label)
}
}

[...]

My unproven gut reaction is that google will have something in place to stop users looping through gigs worth of raw email content every minute. So I'd advise to replace " var threads = GmailApp.getInboxThreads();" with " var threads = GmailApp.search("newer_than:1h");" – Rick Jul 31 '15 at 21:06

[ Voor 67% gewijzigd door F_J_K op 05-09-2018 10:06 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • pven
  • Registratie: Oktober 1999
  • Niet online
Nee, niet de gratis maar de betaalde Gsuite. Nu je het zegt: daar zit inderdaad nog ergens een domeinnaam tussenin.

Google script ... ik ga eens kijken of ik daar aan uit kom. Top, dank voor het voorbeeld!




Hm, met mijn programmeer-skills valt het niet mee om dit werkend te krijgen. Iemand tips? :)




Volgens mij is het gelukt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function processInbox() {
  // process all recent threads in the Inbox (label is inbox, mail is unread)
  var threads = GmailApp.search("label:inbox is:unread");
  // get the id for the label
  var label = GmailApp.getUserLabelByName("@Zut/label");
  for (var i = 0; i < threads.length; i++) {
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
        var message = messages[j];
        var body = message.getRawContent();
        // when the mail is from mail.xyz.nl add the label to it and archive it (unset inbox-label) 
        if (body.indexOf("Received: from mail.xyz.nl") > -1) {
          label.addToThread(threads[i]);
          threads[i].moveToArchive();           
          }      
      }
   }
}

[ Voor 84% gewijzigd door pven op 05-09-2018 11:57 ]

|| Marktplaats-meuk. Afdingen mag! ;-) || slotje.com for sale || Dank pven! ||


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Enige nadeeltje van zoeken op unread is dat mails worden gemist als ze toevallig net zijn gelezen. Al kan je die dan met de hand verplaatsen (als je weet dat het er vandaan komt).

Ook: afhankelijk van hoe je werkt kunnen ook stokoude mails weer unread zijn. Ik bleek er nog een uit 2012 op unread te hebben :D Is dan niet GmailApp.search("newer_than:... beter? Het is geen ramp om een mail meer dan eenmaal te checken, als je er geen honderden per uur krijgt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)