如果群发邮件时数量超过 100 万,怎么在一个小时之内发完

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果群发邮件时数量超过 100 万,怎么在一个小时之内发完相关的知识,希望对你有一定的参考价值。

参考技术A 是不可能做的!回答说有就是骗子!
邮件群发用双翼邮件群发软件!
双翼邮件群发软件,是国内知名轻量级邮件群发软件,专适合于个人、中小企业使用,特点如下:

简洁界面,重要步骤提供操作提示,使用方便。
一对一发送:接收者只会看到这封邮件发给了自己,不会看到其他人的地址,没有任何群发痕迹。
模拟人工发送:并采取一定的反垃圾邮件措施,到达率比手工发送更高。
个性化邮件:邮件内容、邮件标题可插入接收者姓名,显示对收件人的尊重;
多样化邮件:文本宏、随机宏、同义词宏可以非常方便的让是邮件内容千变万化。
多内容发送:一封邮件可以设置多个内容,这些内容被循环(或随机)发给接收者,更接近于手工发送。
多账户发送:使用多邮件账户发送,发送速度更快。
多任务发送:可同时发送多个不同的邮件。
自定义发送数量:用户可自己设置每个发送邮箱账户每天的发送数量,避免发送过多造成邮箱被封。
自定义发送速度:用户可自己设置邮箱的发送速度,避免发送速度过快,而造成拥堵或被认定为广告邮件。
定时发送:在客户的工作时间发送,让客户第一时间看到你的邮件。
断点重发:没有完成的任务,下次启动后继续发送未发送的邮件。
失败重发:发送失败的邮件可单独重新发送。
重复地址检测:在导入地址时自动检测重复地址,避免重复发信被客户加入黑名单。
地址分组管理:强大的地址分组管理功能,方便客户群管理。
导入导出:很方便地导入、导出邮件地址,发送邮箱账户也可以方便的导入、导出。
自动关机:群发任务完成后可设置自动关机,低碳环保。
一次付费,终身使用:不限制发送次数和发送总量,终身使用。
自动换IP:群发邮件过程中自动换IP(本机ADSK拨号,路由器换IP),更适合使用免费邮箱发送。
VPN换IP:群发过程中自动控制VPN软件更换线路,实现换IP。
手工换IP:群发邮件过程中手工换IP,适合使用免费邮箱发,支持多种换IP方法:路由器,VPN等。
自动更换代理:群发过程中自动更换代理,突破免费邮箱IP限制。
安全保护:提供两级密码保护,管理员密码和用户密码;保护邮件地址信息不被他人窃取;软件锁定后邮件正常发送,解除锁定需要录入密码。
可视编辑:提供网页格式邮件编辑,支持网页源代码编辑。
黑名单:加入黑名单的邮件地址会自动过滤掉,不发送。
收集退信、退订邮件:自动从邮箱收集退信和退订邮件,以后不会向这些邮件地址发送邮件了。
邮件阅读跟踪:发出去的邮件谁看了,什么时候看的,看了几次。邮件中那个超链接被点击了,什么时候点击的,共点击了几次。
数据备份和回复:对收件人地址薄、发件人账户、邮件模板、任务日志进行备份和恢复。本回答被提问者采纳

邮件群发工具(C#版)

引言

经常会参与组织一些社区活动,涉及到和不同的人进行交流,微信当然是必须的,同样邮件也是一种不可或缺的方式。

一般群发的邮件不是很友好,如果是一对一的,收到邮件的人是不是会比较重视,而且还有他的名字在里面。

所以抽点时间写了一个工具,使用C#做个发邮件的工具非常简单。

 

完整代码

class Program
    {
        private static string baseDir = "";
        private static string email = "";

        static void Main(string[] args)
        {
            Console.WriteLine("--- 开始执行 --- ");
            baseDir = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
            email = ConfigurationManager.AppSettings["email"];

            var date = DateTime.Now.ToString("yyyy-MM-dd");
            FileStream fs = new FileStream($"{baseDir}\\\\[Log]{date}.txt", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine("===== 发送日志 =====");

            List<Contact> contacts = GetContacts();
            var smtpClient = GetSmtpClient();
            foreach (var contact in contacts)
            {
                SendMail(smtpClient, contact, sw);
            }
            
            sw.WriteLine("===== 执行完成 =====");
            sw.Flush();
            sw.Close();
            fs.Close();
            Console.WriteLine("--- 执行完成 --- ");
            Console.ReadLine();
        }

        private static SmtpClient GetSmtpClient()
        {
            string server = ConfigurationManager.AppSettings["server"];
            string port = ConfigurationManager.AppSettings["port"];
            string password = ConfigurationManager.AppSettings["password"];

            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = server;
            smtpClient.Port = Convert.ToInt32(port);
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.EnableSsl = true;
            smtpClient.Credentials = new NetworkCredential(email, password);
            return smtpClient;
        }

        private static void SendMail(SmtpClient smtpClient, Contact contact, StreamWriter sw)
        {
            try
            {
                var mailMessage = GetMailMessage(contact);
                smtpClient.Send(mailMessage);
                Console.WriteLine($" --- 发送成功, Email = {contact.Email} --- ");
                sw.WriteLine($" --- 发送成功, Email = {contact.Email} --- ");
            }
            catch (Exception ex)
            {
                Console.WriteLine($" === 发送失败, Email = {contact.Email} === ");
                sw.WriteLine($" === 发送失败, Email = {contact.Email} === ");
            }
        }

        private static MailMessage GetMailMessage(Contact contact)
        {
            string subject = ConfigurationManager.AppSettings["subject"];
            string introduce = ConfigurationManager.AppSettings["introduce"];
            string link = ConfigurationManager.AppSettings["link"];
            string content = "<p style=\\"font - size:16px\\">Dear " + contact.Name + " , </p> " +
                                 "<p style=\\"font - size:16px\\">" + introduce + "</p>"+
                                 "<p style=\\"font - size:16px\\">报名链接:"
                    +"<a target=\\"_blank\\" href=\\"" + link + "\\">"+ link + "</a></p>" + GetContent(); MailMessage mailMessage = new MailMessage(email, contact.Email); mailMessage.Subject = subject; mailMessage.Body = content; mailMessage.BodyEncoding = Encoding.UTF8; mailMessage.IsBodyHtml = true; mailMessage.Priority = MailPriority.Normal; return mailMessage; } private static string GetContent() { var dir = baseDir + "\\\\content.txt"; StreamReader sr = new StreamReader(dir, Encoding.UTF8); string content = sr.ReadToEnd(); sr.Close(); return content; } private static List<Contact> GetContacts() { List<Contact> contacts = new List<Contact>(); var dir = baseDir + "\\\\contacts.txt"; StreamReader sr = new StreamReader(dir, Encoding.UTF8); string line; while ((line = sr.ReadLine()) != null) { line = line.Replace(",", ","); var contact = line.Split(new[] {","}, StringSplitOptions.RemoveEmptyEntries); if (contact.Length == 2 && !string.IsNullOrEmpty(contact[0]) && !string.IsNullOrEmpty(contact[1])) { contacts.Add(new Contact() {Name = contact[0], Email = contact[1]}); } } sr.Close(); return contacts; } public class Contact { public string Name { get; set; } public string Email { get; set; } } }

 

app.config

  <appSettings>
    <add key="server" value="smtp.live.com" />
    <add key="port" value="25" />
    <add key="email" value="***@hotmail.com" />
    <add key="password" value="" />
    <add key="subject" value="敏捷个人北京2016年6月活动:玩转生涯狂想曲" />
    <add key="introduce" value="欢迎参加敏捷个人北京2016年6月活动:玩转生涯狂想曲活动!" />
    <add key="link" value="http://www.hdb.com/party/qz1eu?h_share_uid=f0bv" />
  </appSettings>

 

注意

1)读取app.config的配置信息

2)读取程序根目录下的联系人文件:contacts.txt

--------------------------------

测试1,***@gmail.com
测试2,***@qq.com
测试3,***@163.com

--------------------------------

3)读取程序根目录下的内容文件,包含Html代码:content.txt

 

发送结果截图

1)控制台输出日志

技术分享

2)收到邮件内容,dear **

 

技术分享

 

代码下载

 下载地址

以上是关于如果群发邮件时数量超过 100 万,怎么在一个小时之内发完的主要内容,如果未能解决你的问题,请参考以下文章

怎样能每天群发100万封邮件

群发邮件一次可以发多少封?怎么一次发几万封?

哪里有好用免费的邮件群发软件?

邮件为啥发不出去?

邮件群发怎么发

怎么通过邮件群发工资条?