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

aiwuziji · · 3549 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  最近公司在招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"
    subject  string "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 + "; charset=UTF-8"
    } 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 <- err
        }
    }()

    for i := 0; i < len(sendTo); i++ {
        <-done
    }

    return nil
}

  再来就是要加上读取excel文件的功能了,好在也早有第三方的包github.com/tealeg/xlsx,引用到项目中来即可。不过在引用之前,要先安装这个第三方的包才行,因为这个包是在github上面,所以只需要打开命令行窗口,执行go get github.com/tealeg/xlsx就行,当然前提是要装好了git的,另外需要在系统变量PATH中加入git的执行目录,例如C:\Program Files\Git\bin。示例代码如下

package main

import (
    "fmt"
    "github.com/tealeg/xlsx"
)

func main() {
    excelFileName := "/home/tealeg/foo.xlsx" //excel文件路径
    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        ...
    }
    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            for _, cell := range row.Cells {
                fmt.Printf("%s\n", cell.String())
                //读取出内容后调用发邮件的代码即可
            }
        }
    }
}    

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:aiwuziji

查看原文:使用golang实现批量发送面试邀请邮件

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3549 次点击  
加入收藏 微博
1 回复  |  直到 2021-10-21 15:08:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传