【发布时间】:2012-03-21 00:14:56
【问题描述】:
我只是需要帮助。基本上,我正在创建一个向我们的客户发送批量电子邮件的 Windows 应用程序。 “电子邮件”和“附件”字段来自数据库。附件字段仅包含文件所在的路径,代码正在运行,但我没有收到 5 封电子邮件,而是收到了 15 封电子邮件。
注意:我的数据库只包含 5 条记录,因此我应该只收到 5 封带附件的电子邮件:
你能帮我吗,谢谢!
这是我的代码:
string email;
string attachment;
ArrayList emailList = new ArrayList();
ArrayList attachList = new ArrayList();
private static readonly Logger log = new _EventLogger();
private void btnSend_Click(object sender, EventArgs e)
{
conn.Open();
SqlCommand cmdgetEmail = new SqlCommand("Select EMAIL, PATH from MEMBERREQUIREMENTS WHERE STATUS=0", conn);
SqlDataReader getEmail = cmdgetEmail.ExecuteReader();
//count = 0;
while (getEmail.Read())
{
//count++;
//email = getEmail.GetValue(i).ToString();
//emailList.Add(email);
//i = i + 1 - 1;
email = getEmail.GetString(0);
emailList.Add(email);
attachment = getEmail.GetString(1);
attachList.Add(attachment);
}
getEmail.Close();
conn.Close();
sendMail();
}
private void sendMail()
{
string from="myemail@email.com";
foreach (string sendTo in emailList)
{
foreach (string sendAttachments in attachList)
{
MailMessage mail = new MailMessage();
mail.To.Add(sendTo);
mail.From = new MailAddress(from, "Company Name'", Encoding.UTF8);
mail.Subject = subject;
mail.Body = msgBodyHead + msgBodyHead2 + msgDate + msgGreet + msgBody + msgAdobe + msgAssistance + msgCompliment + msgfooter;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
mail.Attachments.Add(new Attachment(sendAttachments));
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(from, "password");
client.Host = "192.167.89.0";
client.EnableSsl = false;
try
{
progress();
client.Send(mail);
}
catch (Exception ex)
{
ProgressBar1.Visible = false;
timer1.Enabled = false;
Exception excpt = ex;
string errorMessage = string.Empty;
while (excpt != null)
{
errorMessage += excpt.ToString(); excpt = excpt.InnerException;
log.Error("Email - LMS Application Error", ex);
lblError.Text = "There was an error occured while processing your request.\n Please see Event Viewer for more details.";
lblError.ForeColor = System.Drawing.Color.Red;
}
}
}
}
}
【问题讨论】:
-
请注意,
[code]和[/code]伪标签没有任何意义。格式化代码的最佳方法是在每一行前添加四个空格。如果您选择所有代码,然后在编辑器中点击{}按钮,它就会正常工作。 -
抱歉,wysywig 编辑器在我们的防火墙上被阻止,所以我看不到它。
-
您只需要修复两个方法名称之前的空格。我自己尝试过,但是 (a) 没有编辑权限,并且 (b) 仅空白的编辑无论如何都被拒绝了:(
-
@Ergwun:很不幸。您的更改评论是否包含足够描述性的句子? (如果您保留“谢谢”和“我只需要帮助”位,它也可能不会被接受——但那是我假设其他人的行为背后的原因。)