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