Angesichts einer Datei mit E -Mail -Empfängern wird diese Übereinstimmungen randomisiert und jeweils eine E -Mail an ihre Übereinstimmung per E -Mail. Die Anwendung garantiert, dass sich niemand selbst erhält, aber alle anderen Kombinationen werden als gültig angesehen. Beachten Sie, dass das Programm die Übereinstimmungen dem Bediener nicht angibt, es sei denn, dies wird ausdrücklich gesagt.
Die Aufgaben werden wiederholt gemischt, bis niemand selbst hat. Dies könnte zwar für immer weitergehen, aber wenn Sie der App nur einen Teilnehmer zur Verfügung stellen. Während das bedeutet, dass Sie an Weihnachten einsam sein werden, wird Ihr Zuhause von Ihrem Computer erwärmt, der sich endlos dreht, um zwei Decks einer Karte auf verschiedene Bestellungen zu mischen.
Sobald die Aufgaben festgelegt sind, werden E -Mails gesendet und unsere Arbeit erledigt. Zurück zum Üben Ihrer Weihnachtslieder und zum Testen Ihres Eierlikör -Rezepts noch einmal, um sicherzugehen.
Abgesehen von der Tatsache, dass wir E -Mails mit einer alten und verlassenen Bibliothek formatieren, ist diese App ziemlich wild überbaut. Es konnte nach 8 Mischungen und ungefähr 2 Sekunden einen gültigen Match -Set auf 100K -Rekorde generieren. Das Senden von 100.000 E -Mails würde jedoch offensichtlich eine Weile dauern!
go get
, um Abhängigkeiten zu installieren (logrus, urfave.cli, gophermail)go build
um die ausführbare Datei secret-santa
zu erstellen./secret-santa
um es zu laufen secret-santa
erhält seine Teilnehmerliste aus einer JSON-Datei, die enthält. Jeder Teilnehmer ist ein Mitglied in einem Array mit name
und address
. Dies --source-file
standardmäßig mit data/people.json
. Weitere Informationen finden Sie im Beispiel.
Sie müssen auch Ihr E -Mail -Körper anpassen, indem Sie eine Vorlagendatei erstellen. Die Datei unterstützt {{.From}}
und {{.To}}
die die Namen sind, die von der JSON -Datei der Teilnehmer gezogen wurden. Diese Standardeinstellung für data/email.template
. Sie können jedoch jeden Pfad verwenden, den Sie mit dem Parameter --template-file
mögen. Weitere Informationen finden Sie im Beispiel.
NAME:
secret-santa - Secret Santa Emailer!
USAGE:
secret-santa [global options] command [command options] [arguments...]
VERSION:
0.0.1
COMMANDS:
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--from-name value Display name for sender (default: "Secret Santa Robotic Elf")
--from-address value Email address to send from (required unless dry run)
--from-password value Password for the from-address (e.g. gmail password)
--smtp-host value Host to send to (default: "smtp.gmail.com")
--smtp-port value Port to send to (default: 587)
--source-file value JSON file containing an array of name/address objects (default: "data/people.json")
--template-file value Text file containing a template used for the email body (default: "data/email.template")
--subject value Email subject (default: "Shhhh! It's your Secret Santa assignment")
--show-matches Print the pairings out when sending
--dry-run Do not send. Implies --show-matches
--help, -h show help
--version, -v print the version
$ ./secret-santa --dry-run --source-file data/example.json
INFO[0000] Shuffling...
INFO[0000] Shuffling...
INFO[0000] Shuffling...
INFO[0000] Shuffling...
INFO[0000] Shuffling...
INFO[0000] match from="Dee Dee" to=Tommy
INFO[0000] match from=Ringo to="Dee Dee"
INFO[0000] match from=George to=Paul
INFO[0000] match from=Joey to=George
INFO[0000] match from=Marky to=Ringo
INFO[0000] match from=Paul to=Marky
INFO[0000] match from=John to=Joey
INFO[0000] match from=Tommy to=John
$ ./secret-santa --from-address "[email protected]" --from-password "your_pass" --source-file data/people.json
INFO[0000] Shuffling...
INFO[0000] Shuffling...
INFO[0001] sent
INFO[0002] sent
INFO[0002] sent
INFO[0003] sent
INFO[0004] sent
INFO[0005] sent
INFO[0006] sent
INFO[0007] sent
INFO[0008] sent
INFO[0009] sent