C# 使用ASP.NET4和c的批量电子邮件
我需要使用ASP.NET4和c向我们网页上的注册用户发送批量电子邮件,以方便访问我们的产品和服务 本教程是: 在用户测试表中,我现在有两封电子邮件: firstEmail@domain.com secondEmail@domain.com 在这个测试中,我没有错误,因为电子邮件和密码对于单个用户是正确的,但我有两个问题 问题1 将收到三封电子邮件: 第一条信息: 发件人:account@domain.com 致:firstEmail@domain.com 第二条信息: 发件人:account@domain.com 致:firstEmail@domain.com, secondEmail@domain.com 第三条信息: 发件人:account@domain.com 致:firstEmail@domain.com, secondEmail@domain.com 我需要为单个用户发送一条消息:C# 使用ASP.NET4和c的批量电子邮件,c#,asp.net,email,C#,Asp.net,Email,我需要使用ASP.NET4和c向我们网页上的注册用户发送批量电子邮件,以方便访问我们的产品和服务 本教程是: 在用户测试表中,我现在有两封电子邮件: firstEmail@domain.com secondEmail@domain.com 在这个测试中,我没有错误,因为电子邮件和密码对于单个用户是正确的,但我有两个问题 问题1 将收到三封电子邮件: 第一条信息: 发件人:account@domain.com 致:firstEmail@domain.com 第二条信息: 发件人:account@
First message:
From: account@domain.com
To: firstEmail@domain.com
Second message:
From: account@domain.com
To: secondEmail@domain.com
问题2
如何设置发送第一条消息和下一条消息之间的时间
我在代码隐藏中使用了以下行:
protected void btnSend_Click(object sender, EventArgs e)
{
try
{
SmtpClient smtpClient = new SmtpClient();
System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
lbltotalcount.Text = string.Empty;
foreach (GridViewRow grow in grvCustomers.Rows)
{
try
{
email = grow.Cells[0].Text.Trim();
password = grow.Cells[1].Text.Trim();
to = email.ToString();
from = "account@domain.com";
mailMessage.From = new System.Net.Mail.MailAddress(from);
mailMessage.To.Add(to);
mailMessage.Subject = "Test send email";
Body = "";
Body += '\n' + "<b>Email: </b>";
Body += '\n' + "<br> " + email.ToString() + "<br>";
Body += '\n' + "<b>Password: </b>";
Body += '\n' + "<br> " + password.ToString() + "<br><br>";
mailMessage.Body = Body;
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.IsBodyHtml = true;
smtpClient.Host = "localhost";
smtpClient.Send(mailMessage);
Response.Write("<br />" + mailMessage.Body.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
如有任何建议,我将不胜感激
谢谢 问题1的意思是你不想在发送到两个电子邮件地址时生成两次消息 如果是这样,您可以将消息逻辑抽象为一个方法,并将电子邮件地址传递给该方法 内部单击b发送\u单击事件
protected void btnSend_Click(object sender, EventArgs e)
{
try
{
...ALL THE PREVIOUS CODE...
mailMessage.Body = GenerateMessage(email);
mailMessage.BodyEncoding = Encoding.UTF8;
mailMessage.IsBodyHtml = true;
... REST OF THE CODE
}
catch()
{}
}
private string GenerateMessage(string email)
{
var sb = new StringBuilder();
sb.Append("<b>Email: </b>");
sb.Append(string.Format("<br> {0} <br>",email));
//.
//.Rest of the stuff here
//..
return sb.ToString();
}
----------更新------
}在您的代码隐藏中,您需要清空foreach中的地址列表 试试这个
mailMessage.From = new System.Net.Mail.MailAddress(from);
mailMessage.To.Clear(); //empty list of address
mailMessage.To.Add(to);
mailMessage.Subject = "Test send email";
您可以在此处阅读对象MailAddressCollection:
希望我能帮到你。一个建议是在try/catch块中使用局部变量来表示电子邮件、密码、收件人、发件人和邮件消息。另外,您使用的SMTP主机是什么?您确定没有收到以前测试的电子邮件吗?一些免费的SMTP主机像gmail一样运行缓慢。我使用我的提供商的SMTP是一种高效的服务。很抱歉,我不理解你关于使用局部变量的建议。使用控制台应用程序发送电子邮件,并在大约100个批次之间引入暂停。好的,第二个问题已经解决,但对于第一个问题,有什么想法吗?一个建议是根本不要使用任何try/catch块。特别是在扔掉内部异常时。我需要避免在收件人中附加电子邮件地址。。。在这一刻,我没有一封邮件一个收件人,我有一封邮件多个收件人…你想这些密码去所有的收件人???或者您正在尝试为每个收件人发送带有密码的电子邮件?我刚刚更新了答案,希望这就是你想要实现的
mailMessage.From = new System.Net.Mail.MailAddress(from);
mailMessage.To.Clear(); //empty list of address
mailMessage.To.Add(to);
mailMessage.Subject = "Test send email";