I want to write a python script to send an email to my staff. but it appear an erro Script line 14 contentObject = review_state.object ^ SyntaxError: invalid syntax what was wrong? My script like this contentObject = review_state.object def isIn(list1, list2): y=0 for x in list1: if x in list2: y += 1 return y mailList=[] for item in context.portal_membership.listMembers(): memberId = item.id # Remember that a real name is not mandatory, so fall back to the username if item.fullname: memberName = item.fullname else: memberName = memberId memberInterests = item.interest # ...and another that's the keywords of this object contentKeywords = contentObject.subject # Check to see if there's a match between the two isInterestedIn = isIn(memberInterests, contentKeywords) # This is the key condition: # If the user has the Member role and # we have an email address and # the user's interested in this content and # we have permission to email them if 'Member' in context.portal_membership.getMemberById(memberId).getRoles() \ and (item.email !='') and isInterestedIn and item.emailPermission: # add them to the list of people we're emailing mailList.append(item.email) # check that we can send email via the Zope standard Mail Host try: mailhost=getattr(context, context.portal_url.superValues('Mail Host')[0].id) except: raise AttributeError, "Cannot find a Mail Host object" # Let's write an email: mMsg = 'Dear ' + memberName + ',\n\n' mMsg += 'We thought you\'d be interested in hearing about:\n' mMsg += contentObject.TitleOrId() + '\n\n' mMsg += 'Description: \n' + contentObject.Description() + '\n\n' mMsg += 'More info at:\n' + contentObject.absolute_url() + '\n' mTo = item.email mFrom = 'you@yoursite.com' mSubj = 'New Content available' # and send it mailhost.send(mMsg, mTo, mFrom, mSubj) recipients = string.join(mailList, sep='\n') keywordsString = string.join(contentKeywords, sep='\n') mTo = 'you@yourdomain.com' mMsg = 'The following people were sent a link to\n' mMsg += contentObject.absolute_url() + '\n\n' mMsg += recipients + '\n\n' mMsg += 'The keywords were:\n' + keywordsString mSubj = 'Content announcement email confirmation' mailhost.send(mMsg, mTo, mFrom, mSubj)
I want to write a python script to send an email to my staff. but it appear an erro
Script line 14 contentObject = review_state.object ^ SyntaxError: invalid syntax
what was wrong? My script like this
contentObject = review_state.object def isIn(list1, list2): y=0 for x in list1: if x in list2: y += 1 return y mailList=[]
... It's hard to tell by email, but I'd lay down money that your indentation is wrong. Remember that indentation counts in Python, and Python scripts don't want to start with any indentation. --jcc -- "My point and period will be throughly wrought, Or well or ill, as this day's battle's fought."
participants (2)
-
Chy Ty -
J. Cameron Cooper