Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向多个使用SMTP的用户发送通知邮件,每个用户具有不同的邮件_C#_Smtp - Fatal编程技术网

C# 向多个使用SMTP的用户发送通知邮件,每个用户具有不同的邮件

C# 向多个使用SMTP的用户发送通知邮件,每个用户具有不同的邮件,c#,smtp,C#,Smtp,我必须向to recipients中的一个用户数组发送通知,每个用户都有一个不同的消息体,该消息体存储在另一个数组中。 当我尝试使用对SMTP.send()的多个调用将通知一个接一个地发送给每个用户(我尝试测试了两个用户)及其各自的消息体时,会出现如下异常 “{”连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应10.1.11.16:25“}” 在哪里,因为它在进行单个SMTP时工作正常。在我有“;”的地方发送呼叫分开的收件人和相同的邮件正文。 我该如何

我必须向to recipients中的一个用户数组发送通知,每个用户都有一个不同的消息体,该消息体存储在另一个数组中。 当我尝试使用对SMTP.send()的多个调用将通知一个接一个地发送给每个用户(我尝试测试了两个用户)及其各自的消息体时,会出现如下异常 “{”连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能响应10.1.11.16:25“}”

在哪里,因为它在进行单个SMTP时工作正常。在我有“;”的地方发送呼叫分开的收件人和相同的邮件正文。 我该如何解决它

控制器代码发送用户数组和数组中的消息

string[] emailBodyList = FormatedEmail.ToArray(); 
string[] emailIdList = emailIDs.ToArray(); DMS.Common.Encyptor.NotificationSend(FromEmail, ToEmail, CCEmail, BCCEmail, model.MailSubject, emailBodyList, emailIdList);
在Encryptor.cs中,SMTP方法:

public static void NotificationSend(string FromEmail, string ToEmail, string CCEmail, string BCCEmail, string EmailSubject, string[] EmailBody = null, string[] emailID =null)
{
    for(int i = 0; i < EmailBody.Length ; i++)
    {
        string notificationBody = EmailBody[i];
        string notificationTo = emailID[i];
        EmailSend(FromEmail, notificationTo, null, null, EmailSubject, notificationBody);

    }
}

public static void EmailSend(string FromEmail, string ToEmail, string           CCEmail, string BCCEmail, string EmailSubject, string EmailBody= null, string emailID = null)
{
    var email = new MailMessage();

    email.From = new MailAddress(FromEmail);

    string[] toemails = ToEmail.Split(';');
    foreach (string str in toemails)
    {
        if (!String.IsNullOrEmpty(str) && str.Contains('@'))
        {
            email.To.Add(new MailAddress(str.TrimEnd(new char[] { ',' })));
        }
    }

    //email.Headers.Add("Reply-To", "saeed.badar@unibetonrm.com");

    // Add CC
    if (!String.IsNullOrEmpty(CCEmail))
    {
        string[] ccemails = CCEmail.Split(';');
        foreach (string str in ccemails)
        {
            if (!String.IsNullOrEmpty(str) && str.Contains('@'))
            {
                email.CC.Add(new MailAddress(str.TrimEnd(new char[] { ',' })));
            }
        }
    }
    // Add BCC
    if (!String.IsNullOrEmpty(BCCEmail))
    {
        string[] bccemails = BCCEmail.Split(';');
        foreach (string str in bccemails)
        {
            if (!String.IsNullOrEmpty(str) && str.Contains('@'))
            {
                email.Bcc.Add(new MailAddress(str.TrimEnd(new char[] { ',' })));
            }
        }
    }

    email.IsBodyHtml = true;
    email.Body = EmailBody;
    email.Subject = EmailSubject;

    SmtpClient smtpClient = new SmtpClient();
    smtpClient.Host = AppConfig.GetValue("SmtpHost").ToString();
    smtpClient.Port = int.Parse(AppConfig.GetValue("SmtpPort").ToString());
    //smtpClient.EnableSsl = true;
    smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
    smtpClient.Credentials = new System.Net.NetworkCredential(AppConfig.GetValue("SmtpServerUserName").ToString(), AppConfig.GetValue("SmtpServerPassword").ToString());
    smtpClient.Send(email);
}
public static void NotificationSend(string fromeail、string ToEmail、string CCEmail、string BCCEmail、string EmailSubject、string[]EmailBody=null、string[]emailID=null)
{
for(int i=0;i
错误消息似乎表明错误与您试图发送的电子邮件类型无关

SMTP是否需要windows凭据才能登录?你似乎想两者兼得。由于您正在指定用户名和密码,请尝试设置

smtpClient.UseDefaultCredentials = false;
以前

smtpClient.Credentials = new System.Net.NetworkCredential(AppConfig.GetValue("SmtpServerUserName").ToString(), AppConfig.GetValue("SmtpServerPassword").ToString());
此外,您还需要决定是否要使用
CredentialCache.DefaultNetworkCredentials


确保防火墙没有阻止与SMTP服务器的连接,并且您的凭据正确。

错误消息似乎表明错误与您尝试发送的电子邮件类型无关

SMTP是否需要windows凭据才能登录?你似乎想两者兼得。由于您正在指定用户名和密码,请尝试设置

smtpClient.UseDefaultCredentials = false;
以前

smtpClient.Credentials = new System.Net.NetworkCredential(AppConfig.GetValue("SmtpServerUserName").ToString(), AppConfig.GetValue("SmtpServerPassword").ToString());
此外,您还需要决定是否要使用
CredentialCache.DefaultNetworkCredentials


确保防火墙未阻止与SMTP服务器的连接,并且您的凭据正确。

向单个用户发送邮件也会失败,出现相同的异常向单个用户发送邮件也会失败,出现相同的异常。如果您尝试设置smtpClient.UseDefaultCredentials=false;但它似乎不起作用。我也看到了同样的例外。控件来自循环。谢谢,我尝试设置smtpClient.UseDefaultCredentials=false;但它似乎不起作用。我也看到了同样的例外。控制来自循环。