0x01 困境
在做钓鱼邮件时,有时候需要发送的人过多,导致在邮件发送这个过程中花费过多时间。
0x02 解决思路
1,第一种可以用如下这种,直接在收件人中实现批量发送,但是有个问题是,这种情况实现批量发送,所有收件人的邮件内容都是一样,这种就不能实现每个人邮件的特殊化(因为需要在邮件中加入tracker,通过这个tracker来跟踪对应收件人对应邮件的状态),所以这种方法目前有问题。
msg.SetHeader(“Bcc”, mailto…
2,第二种直接就是并发来发送,利用goruntine,每一个收件人对应一个goruntine。这种的问题就是需要自己设置smtp服务器可以接受的连接数,保证客户端到smtp有足够的连接来对应goruntine的数量,否则连接就会重置,造成发送不出去邮件
如下所示,activecall参数的解释
activeCall is an atomic int32; the low bit is whether Close has been called. the rest of the bits are the number of goroutines in Conn.Write.
为0时,代表连接正常,为1时,代表连接关闭。如果smtp的连接数小于goruntine的数量,就会造成连接关闭,activecall参数为1.