GoLang语言:邮件群发器
Go语言邮件群发器 main.go
// Multi-SendEmail project main.go
package mainimport ("bufio""errors""fmt""io""io/ioutil""net/smtp""os""strings""time"
)func SendMail(user, password, host, to, subject, body, mailtype string) error {hp := strings.Split(host, ":")auth := smtp.PlainAuth("", user, password, hp[0])var content_type stringif mailtype == "html" {content_type = "Content-Type: text/html;charset=UTF-8"} else {content_type = "Content-Type: text/plain;charset=UTF-8"}msg := []byte("To: " + to + "\r\nFrom: " + user + "<" + user + ">\r\nSubject: " + subject + "\r\n" + content_type + "\r\n\r\n" + body)send_to := strings.Split(to, ";")err := smtp.SendMail(host, auth, user, send_to, msg)return err
}func readLine2Array(filename string) ([]string, error) {result := make([]string, 0)file, err := os.Open(filename)if err != nil {return result, errors.New("Open file failed.")}defer file.Close()bf := bufio.NewReader(file)for {line, isPrefix, err1 := bf.ReadLine()if err1 != nil {if err1 != io.EOF {return result, errors.New("ReadLine no finish")}break}if isPrefix {return result, errors.New("Line is too long")}str := string(line)result = append(result, str)}return result, nil
}func main() {fmt.Println("start...")user := "邮箱@qq.com"password := "密码"host := "smtp.qq.com:25" //QQ为例subject := "邮件标题"sendTo, err := readLine2Array("send.txt")if err != nil {fmt.Println(err)return}content, err := ioutil.ReadFile("email.txt")if err != nil {fmt.Println(err)return}body := string(content)for i := 0; i < len(sendTo); i++ {to := sendTo[i]fmt.Println("Send email to " + to)err = SendMail(user, password, host, to, subject, body, "html")if err != nil {fmt.Println("send mail error!")fmt.Println(err)i--time.Sleep(600 * time.Second)} else {fmt.Println("send mail success!")}}
}
使用说明:
编译出exe文件,把要发送的邮箱一行一个放入send.txt中,邮件内容放入email.txt中(HTML格式),运行。
这代码我也有在用,有很多不灵活的地方,仅供参考。
注意:注意端口号到底是哪个哦。
GoLang语言:邮件群发器相关推荐
- 用C#打造匿名邮件群发软件
用C#打造匿名邮件群发软件 masepu(本文已发表于黑客防线,转载请注明出处) 电子邮件攻击是最常见的网络攻击手法之一,黑客们通过电子邮件发送木马.病毒或是包含有攻击性或信息获取脚本的特定html代 ...
- 邮件群发工具的编写(四)邮件跟踪服务
不管黑猫白猫,抓得到老鼠的就是好猫 上一篇,邮件群发工具的编写(三)邮件发送的几种方式 中,我们谈到了发送邮件.这一篇,我们讲讲邮件跟踪服务器的创建 邮件群发出去之后,很多朋友都想知道群发的效果.这就 ...
- 落草QQ群成员提取器,邮件群发
小软件,大功能,最好的寻找定向流量邮件营销利器: 我们经常利用QQ加入一些我们自己感兴趣的主题QQ群,那么这个QQ群里面的其他QQ用户肯定也是对此感兴趣,因为没人强迫加入群.既然这样,如果我们有某些产 ...
- C++实现邮件群发的方法
这篇文章主要介绍了C++实现邮件群发的方法,较为详细的分析了邮件发送的原理与C++相关实现技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C++实现邮件群发的方法.分享给大家供大家参考.具 ...
- Golang语言全栈开发视频教程全集
基础课: 语言基础第01天(变量和基本类型) 语言基础第02天(运算符和流程控制) 语言基础第03天(循环函数和工程管理) 语言基础第04天(工程管理和数组) 语言基础第05天(切片和map) 语言基 ...
- 如何更新 Exchange2003 SP2 中的智能邮件筛选器版本
概要 本文介绍了可用于维护 Microsoft Exchange 2003 Service Pack 2 (SP2) 所附带的智能邮件筛选器版本 2 的更新过程. 在每月的第一个和第三个星期三,将通过 ...
- golang语言编译的二进制可执行文件为什么比 C 语言大(转载)
最近一位朋友问我"为什么同样的hello world 入门程序"为什么golang编译出来的二进制文件,比 C 大,而且大很多.我做了个测试,来分析这个问题.C 语言的hello ...
- 语言与golang语言运行速度_Golang语言情怀第13期 Go 语言设计模式 介绍
设计模式是什么 俗话说:站在别人的肩膀上,我们会看得更远.设计模式的出现可以让我们站在前人的肩膀上,通过一些成熟的设计方案来指导新项目的开发和设计,以便于我们开发出具有更好的灵活性和可扩展性,也更易于 ...
- Snovio软件怎么用?请看这篇邮件群发平台使用指南
在本文中,我们将为您提供分步指导,使用Snovio邮件群发软件(https:www.snovio.cn)并构建自己的自动化邮件营销-从收集客户邮箱地址到启动针对目标客户的复杂序列邮件,所有这些都在一个 ...
- 算法和数据结构(golang语言实现)
算法和数据结构(golang语言实现) 第1节 选择.冒泡.插入.复杂度 选择排序 选择排序 时间复杂度为O(N^2) 额外空间复杂度O(1) 过程: arr[0-N-1]范围上,找到最小值所在的位置 ...
最新文章
- UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
- 模拟出ios中流行的黑色背景底
- Java 和 HTTP 的那些事(四) HTTPS 和 证书
- mybatis plus 日志打印_mybatis升级为mybatis-plus踩到的坑
- 改变vim注释的颜色
- 启明云端分享|ESP32-S3 Smartconfig一键配网
- 每周分享第 19 期(20190426)
- 单例模式在JDK应用的源码分析
- Java PropertyPermission getActions()方法与示例
- GAE 博客——B3log Solo 0.3.0 正式版发布了!
- 后台程序全局钩子获取鼠标滚轮滚动方向(VB6.0)
- 最新软件设计师考试大纲
- 【现代卫星导航系统】之北斗卫星导航系统
- 查看mysql 当前锁级别_mysql innodb下的锁及隔离级别
- 一文讲清跨境S2B2C模式及线上品牌/新零售品牌实战打法
- 天影字幕_天影字幕(GeniusCG) V 12.50 官方版
- div+css制作哆啦A梦
- 宝塔服务器源代码修改记录,宝塔BT面板修改相关记录,所有插件免费用
- 【摘】WebGIS开发从入门到......
- 好嗨游戏:LPL春季赛决赛在即,黑8传奇JDG迎战S8冠军IG
热门文章
- JAVA面大厂简历怎么写_大厂程序员来谈一谈要如何写简历!!(附简历模板)...
- P3554 LUK-Triumphal arch 解题报告
- 书摘---创业36条军规3:创业人七大须知
- html ui windows 风格,5个最佳开源Metro风格(Windows UI)CSS框架
- 分享5款干净好用的电脑浏览器,用最后一款工作不累
- python spark pyspark——朴素贝叶斯习题整理
- 关闭colorbox刷新页面
- java_求1到n英寸换算厘米 (右对齐,保留两位小数)
- 简述关于ASP.NET MVC与.NET CORE 的区别
- 关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题?