Skip to content

Instantly share code, notes, and snippets.

@debnet
Created January 19, 2022 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save debnet/3781df6c29358601e5349c255e882785 to your computer and use it in GitHub Desktop.
Save debnet/3781df6c29358601e5349c255e882785 to your computer and use it in GitHub Desktop.
AUTH_URL = "https://api.helloasso.com/oauth2/token"
API_URL = "https://api.helloasso.com/v5/organizations/afpy/forms/{form_type}/{form_slug}/items"
import requests as rq
session = rq.Session()
resp = session.post(AUTH_URL, data=dict(
client_id="",
client_secret="",
grant_type="client_credentials",
)).json()
session.headers.update({"Authorization": f"Bearer {resp['access_token']}"})
forms = (
"formulaire-d-adhesion-a-l-afpy",
"adhesion-2019-a-l-afpy",
"adhesion-2020-a-l-afpy",
"adhesion-2021-a-l-afpy",
"adhesion-2022-a-l-afpy",
)
users = {}
for form_slug in forms:
url = API_URL.format(form_type="Membership", form_slug=form_slug)
page = 0
while not page or data["pagination"]["pageIndex"] != data["pagination"]["totalPages"]:
page += 1
data = session.get(url, params=dict(pageSize=100, pageIndex=page)).json()
for item in data["data"]:
payer = item["payer"]
users[payer["email"].lower()] = payer
import smtplib
from email.message import EmailMessage
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
HOST = "mail.gandi.net"
PORT = 587
USER = "president@afpy.org"
PASS = ""
SUBJECT = "[AFPy] Convocation à l'assemblée générale (mercredi 9 février de 18h à 20h)"
with smtplib.SMTP(HOST, port=PORT) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.login(USER, PASS)
for mail, user in users.items():
msg = MIMEMultipart() # EmailMessage()
msg['Subject'] = SUBJECT
msg['From'] = f"AFPy.org <{USER}>"
msg["To"] = f'{user["firstName"]} {user["lastName"]} <{user["email"]}>'
with open('email.txt', encoding='utf-8') as file:
text = file.read()
text = text.format(first_name=user["firstName"], last_name=user["lastName"])
msg.attach(MIMEText(text, "plain"))
invite = MIMEBase("text", "calendar", method="REQUEST", name="invite.ics")
invite.set_payload(open("invite.ics", "rb").read())
invite.add_header("Content-Class", "urn:content-classes:calendarmessage")
msg.attach(invite)
try:
pass # smtp.send_message(msg)
except:
print(mail)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment