Skip to content

Instantly share code, notes, and snippets.

@suapapa
Last active December 16, 2015 08:28
Show Gist options
  • Save suapapa/5405588 to your computer and use it in GitHub Desktop.
Save suapapa/5405588 to your computer and use it in GitHub Desktop.
Invitation spammer for Go mini conference Korea 2013.
package main
import (
"encoding/csv"
"log"
"net/smtp"
"os"
)
func main() {
subj := "[GDG Korea Golang] 고 언어 미니 컨퍼런스 발표 자료를 마무리를 하실 때가 되셨습니다."
cont := `님 안녕하세요.
고 언어 미니컨퍼러스에 발표 신청을 해 주셔서 감사합니다.
이제 슬슬 발표 자료를 마무리해 주실 때가 되셨습니다.
컨퍼런스 후에 발표자료를 취합하려 합니다만,
이미 자료 준비를 끝내신 경우 구글문서 링크나, 슬라이드 쉐어 링크 등
편하신 방법으로 먼저 답 메일로 전달해 주셔도 무방합니다. :)
시간과 장소 다시 한번 상기해 드립니다.
* 시간: 2013년 4월 20일 (토요일)
* 장소: CNN THE BIZ 강남센터
구글 캘린더를 사용하신다면,
아래 이벤트 링크를 통해 시간과 장소를
쉽게 개인 달력에 등록 하실 수 있습니다.
https://plus.google.com/events/cgeohki6hci7ea4e30o43mevp7g
행사에 대해 궁금하신 점은 답 메일로 물어보시거나,
GDG Korea Golang 커뮤니티에 편하게 남겨 주시기 바랍니다.
https://plus.google.com/communities/115721275599816202991
그럼, 컨퍼런스 당일에 뵙겠습니다.
감사합니다.
이호민 드림
`
// Set up authentication information.
auth := smtp.PlainAuth(
"",
os.Getenv("GMAIL_ACCOUNT"),
os.Getenv("GMAIL_PASSWD"),
"smtp.gmail.com",
)
for p := range ReceiptanceIter() {
log.Println("Sending to", p.Name, "...")
fc := "Subject: " + subj + "\r\n\r\n" + p.Name + cont
/* fmt.Println(fc) */
err := smtp.SendMail(
"smtp.gmail.com:587",
auth,
os.Getenv("GMAIL_ACCOUNT"),
[]string{p.Email},
[]byte(fc),
)
if err != nil {
log.Fatal(err)
}
}
}
type Receiptance struct {
Name, Email string
}
func ReceiptanceIter() chan *Receiptance {
r, err := os.Open("gdg.csv")
if err != nil {
log.Fatal(err)
}
items, err := csv.NewReader(r).ReadAll()
if err != nil {
log.Fatal(err)
}
items = items[1:]
rC := make(chan *Receiptance)
go func() {
for _, i := range items {
rC <- &Receiptance{
Name: i[1],
Email: i[2],
}
}
close(rC)
}()
return rC
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment