c# - ssis任务 - 发送邮件失败

时间:2017-02-06 19:10:26

标签: c# .net ssis .net-4.0 smtp

我有一个ssis包,我尝试通过脚本任务向用户列表发送电子邮件。 我能够成功地向1000个用户发送邮件,但我收到10个错误。我正在尝试调试此问题。电子邮件ID虽然没有任何问题。请在下面找到代码段。任何指针都会非常有用。

 private void SendMailMessage(string SendTo, string SendCC, string SendBCC, string From, string Subject, string Body, bool IsBodyHtml, string Server, string FileAttachment)
    //private void SendMailMessage(string SendTo, string From, string Subject, string Body, bool IsBodyHtml, string Server)
    {
        SmtpClient mySmtpClient;
        String[] splittedAddresses;
        MailMessage htmlMessage;
        StringBuilder sbAddresses = new StringBuilder();
        //emails in a batch.
        int numberOfEmails = 10;
        int totalEmails = 0;

        //take all the addressess and append them into one whole object.
        if (!String.IsNullOrEmpty(SendTo))
        {
            sbAddresses.Append(SendTo);
        }
        if (!String.IsNullOrEmpty(SendCC)) 
        {
            if (sbAddresses.Length > 0)
            {
                sbAddresses.Append(String.Format(",{0}", SendCC));
            }
            else
            {
                sbAddresses.Append(SendCC);
            }

        }
        if(!String.IsNullOrEmpty(SendBCC))
        {
            if (sbAddresses.Length > 0)
            {
                sbAddresses.Append(String.Format(",{0}", SendBCC));
            }
            else
            {
                sbAddresses.Append(SendBCC);
            }

        }

        mySmtpClient = new SmtpClient(Server);
        splittedAddresses = sbAddresses.ToString().Split(new char [] {','}, StringSplitOptions.RemoveEmptyEntries);

        //Send the email in batches of #numberOfEmails
        while (totalEmails < splittedAddresses.Length)
        {

            IEnumerable<String> emailRecipients = splittedAddresses.Skip(totalEmails).Take(numberOfEmails);
            CreateMailMessage(From, Subject, Body, IsBodyHtml, FileAttachment, out htmlMessage);
            foreach(string email in emailRecipients)
            {
                htmlMessage.Bcc.Add(new MailAddress(email));
            }
            mySmtpClient.Send(htmlMessage);
            totalEmails += emailRecipients.Count();
        }


        //mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;


    }

    private static void CreateMailMessage(string From, string Subject, string Body, bool IsBodyHtml, string FileAttachment, out MailMessage htmlMessage)
    {
        htmlMessage = new MailMessage();
        htmlMessage.From = new MailAddress(From);
        htmlMessage.Subject = Subject;
        htmlMessage.Body = Body;
        htmlMessage.IsBodyHtml = IsBodyHtml;
        htmlMessage.Attachments.Add(new Attachment(FileAttachment));
    } 

0 个答案:

没有答案