jason0401 发表于 2018-9-20 10:39:05

使用golang实现批量发送面试邀请邮件

  最近公司在招app开发人员,每天的简历多达上百份,经常需要给十几个人发邮件,邮件内容基本差不多,就是告诉下对方公司的详细地址以及乘车路线,不同的就是面试者的姓名,应聘的职位,面试的时间和邮件地址不同,这样一个个的复制粘贴去发邮件实在是浪费时间,尤其是对于一个程序员来说。既然作为一个程序员,就要有程序员的样,写个程序来解决。我想的是把要邀请面试的人员信息放到一个excel里面,通过程序去读取出来并自动发送邮件,当然这个功能并不难,用c#也很容易就实现了,不过最近正在学些golang,正好拿这个练下手。
  先说发邮件功能,这个有系统自带的包,引用net/smtp就行,另外网上也有写的比较完善的例子,拿来用就行。发送邮件的代码如下
  

package libofm  

  
import (
  

"net/smtp"  
"strings"
  
)
  

  
const (
  
HOST      = "smtp.****.com"
  
SERVER_ADDR = "smtp.****.com:25"
  
USER      = "test@****.com" //发送邮件的邮箱
  
PASSWORD    = "123456"            //发送邮件邮箱的密码
  
)
  

  
type Email struct {
  
to       string "to"
  
subjectstring "subject"
  
msg      string "msg"
  
mailtype string "html"
  
}
  

  
func NewEmail(to, subject, msg, mailtype string) *Email {
  
return &Email{to: to, subject: subject, msg: msg, mailtype: mailtype}
  
}
  

  
func SendEmail(email *Email) error {
  
auth := smtp.PlainAuth("", USER, PASSWORD, HOST)
  
sendTo := strings.Split(email.to, ";")
  
done := make(chan error, 1024)
  
var content_type string
  
if email.mailtype == "html" {
  
content_type = "Content-Type: text/" + email.mailtype + "; "
  
} else {
  
content_type = "Content-Type: text/plain" + "; charset=UTF-8"
  
}
  

  
go func() {
  
defer close(done)
  
for _, v := range sendTo {
  

  
str := strings.Replace("From: "+USER+"~To: "+v+"~Subject: "+email.subject+"~"+content_type+"~~", "~", "\r\n", -1) + email.msg
  

  
err := smtp.SendMail(
  
SERVER_ADDR,
  
auth,
  
USER,
  
[]string{v},
  
[]byte(str),
  
)
  
done
页: [1]
查看完整版本: 使用golang实现批量发送面试邀请邮件