【问题标题】:how to send email with different smtp?如何使用不同的 smtp 发送电子邮件?
【发布时间】:2014-01-23 02:27:52
【问题描述】:

我正在尝试使用 SMTP 客户端(例如 gmail smtp)发送电子邮件。我知道如何发送一封电子邮件,但我想要一些自动化。

我想要什么:我想用一个 smtp 发送 25 封电子邮件,然后更改 smtp(用户名和密码。) 例如前 25 封带有 username1 密码的电子邮件 其他 25 封 suername2 密码 2 的电子邮件

    SmtpClient client = new SmtpClient();
    client.Port = 587;
    client.Host = "smtp.gmail.com";
    client.EnableSsl = true;
    client.Timeout = 10000;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("user@gmail.com","password");

    MailMessage mm = new MailMessage("donotreply@domain.com", "sendtomyemail@domain.co.uk", "test", "test");
    mm.BodyEncoding = UTF8Encoding.UTF8;
    mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

    client.Send(mm);

【问题讨论】:

  • 那么,你对上面的代码有什么问题吗?而且,顺便说一句,SmtpClientMailMessage 都需要在 using 块中。
  • 通过此代码我只能发送 1 封电子邮件,我想发送超过 1 封。

标签: c# email smtp gmail


【解决方案1】:

我不熟悉,您一次只能使用 google smtp 发送一封电子邮件,但如果您正在寻找可以在 smtp 之间切换的东西,这样的事情可能会做到:

public void MyMailFunction()
    {
        while (true)
        {
            bool SwitchSMTP = false;

            using (var db = whatEverContext())
            {
                var q = from s in db.mail select s;
                var myList = q.ToList.Take(25);
                if (myList.Count() == 0)
                {
                    break; 
                }

                if (!SwitchSMTP)
                    {
                        SendMails(myList, 25, "smtp.gmail.com", "myusername", "mypassword");
                        SwitchSMTP = true;

                    }
                    else
                    {
                        SendMails(myList, 25, "smtp.gmail.com", "myusername", "mypassword");
                        SwitchSMTP = false;
                    }


            }

        }
    }

    internal void SendMails(IEnumerable<Mail> myList, int port, string host, string username, string password)
    {
        SmtpClient client = new SmtpClient();
        client.Port = port;
        client.Host = host;
        client.EnableSsl = true;
        client.Timeout = 10000;
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Credentials = new System.Net.NetworkCredential(username, password);

        foreach (var m in myList)
        {

            MailMessage mm = new MailMessage("donotreply@domain.com", "sendtomyemail@domain.co.uk", "test", "test");
            mm.BodyEncoding = UTF8Encoding.UTF8;
            mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
            client.Send(mm);
        }

        client.Dispose();
    }

我还没有编译代码,但这个想法可能是您正在寻找的?

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2021-12-28
    • 2019-02-11
    • 1970-01-01
    相关资源
    最近更新 更多