import pywikibot
import sys
import codecs

userlist=[
'MoiraMoira','Rode raaf','Tulp8','Magere Hein','Wiki13','Xxmarijnw','Machaerus',
'ErikvanB','JanCK Fietser','Encycloon','Paul Brussel','The Banner','De Wikischim',
'Edoderoo','Antoine.01','Bdijkstra','Malinka1','RonaldB','Apdency','Robotje',
'Bob.v.R','Vis met 1 oog','Gouwenaar','Wikiklaas','MatthijsWiki','XXBlackburnXx',
'Kattenkruid','J├╝rgen Eissink','Dqfn13','Happytravels','Freaky Fries','Richardkiwi',
'Ymnes','Vinvlugt','Wikiwerner','Saschaporsche','JanB46','Ecritures','DirkVE','RonnieV',
'Heinonlein','SanderO','Verdel','Ellywa','Erik Wannee','Eve',
]

userlist=['edoderoo','edoderoobot','milanderoo','SRientjes']
userlist=['edoderoo']

bericht='' \
'E-learning programma effectieve online communicatie voor Wikipedianen\n\n' \
'Wikipedianen en Wikimedianen die meer willen weten over hoe online communicatie werkt, of die willen leren hoe ze online strategisch kunnen omgaan met moeilijke situaties - of moeilijke mensen - kunnen nu een e-learning programma doen.\n\n' \
'Het programma is in opdracht van Wikimedia Nederland ontwikkeld door de coachingsdeskundigen van het bureau eCoachPro. Het is speciaal geschreven voor de wereld achter Wikipedia. eCoachPro werkte hierbij samen met een begeleidingsgroep van Nederlandse Wikipedianen en het programma is door een aantal actieve Wikipedianen getest.\n\n' \
'*Je kunt dit programma helemaal zelfstandig doorlopen, of je kunt ervoor kiezen begeleid te worden door een coach\n' \
'*Je kunt op elk moment stoppen en later weer verder gaan.\n' \
'*In drie avonden doe je het hele programma\n' \
'*En vanzelfsprekend kost het niets....\n\n' \
'Heb je belangstelling?  Meer informatie: https://nl.wikimedia.org/wiki/Effectief_Online_Samenwerken\n\n' 

site = pywikibot.Site('en','wikipedia')

def logme(verbose, formatstring, *parameters):
  with codecs.open("mailing.log.csv", "a", encoding="utf-8") as logfile:
    formattedstring = u'%s%s' % (formatstring, '\n')
    try:
      logfile.write(formattedstring % (parameters) )
    except :
      exctype, value = sys.exc_info()[:2]
      print("1) Error writing to logfile on: [%s] [%s]" % (exctype, value))
      verbose = True    #now I want to see what!
    logfile.close()
  if verbose:
    print(formatstring % (parameters))


def mailoneuser(username):
 mailsubject='Iets nuttigs doen tijdens de kerstvakantie?'

 wikiuser=pywikibot.User(site,username)
 if not wikiuser.isEmailable():
   logme(False,"User is has no mail: %s", username)
   return(0)
 if wikiuser.isBlocked():
   logme(False,"User is blocked    : %s", username)
   return(0)

 try:
   wikiuser.send_email(subject=mailsubject, text=bericht)
   logme(False,"Succes: %s",  username)
   return(1)
 except:
   logme(True,"Fail on user: %s", username)
   return(0)


for user in userlist:
    mailoneuser(user)
 
Fail on user: edoderoo
import pywikibot
site=pywikibot.Site('fr')
wikiuser=pywikibot.User(site,'edoderoo')
print(site.has_right("sendemail"))
##wikiuser.send_email(subject='x',text='dit is het bericht')
False
import pywikibot
changemail='Dit is de mail'
mailuser=pywikibot.User(pywikibot.Site('nl'),'Edoderoo')
mailuser.send_email(subject='x',text='y')
##mailuser.sendMail(subject='datumTBP', text=changemail)
---------------------------------------------------------------------------
UserRightsError                           Traceback (most recent call last)
<ipython-input-2-83a9c2eea3bc> in <module>()
      2 changemail='Dit is de mail'
      3 mailuser=pywikibot.User(pywikibot.Site('nl'),'Edoderoo')
----> 4 mailuser.send_email(subject='x',text='y')
      5 ##mailuser.sendMail(subject='datumTBP', text=changemail)

/srv/paws/pwb/pywikibot/page.py in send_email(self, subject, text, ccme)
   3432 
   3433         if not self.site.has_right('sendemail'):
-> 3434             raise UserRightsError("You don't have permission to send mail")
   3435 
   3436         params = {

UserRightsError: You don't have permission to send mail