C# 当我运行代码并发送它时,它显示发送失败
大家好,我在windows窗体中使用listbox发送批量邮件时遇到问题…当我尝试发送批量邮件时显示发送失败..这是我的代码我不知道我检查过的代码有什么问题我不知道有什么问题C# 当我运行代码并发送它时,它显示发送失败,c#,sql-server,C#,Sql Server,大家好,我在windows窗体中使用listbox发送批量邮件时遇到问题…当我尝试发送批量邮件时显示发送失败..这是我的代码我不知道我检查过的代码有什么问题我不知道有什么问题 void SendMail1(string from,string to,string subject,string message,string host,int port,string un,string pw) { MailMessage tm = new MailMessage();
void SendMail1(string from,string to,string subject,string message,string host,int port,string un,string pw)
{
MailMessage tm = new MailMessage();
tm.From = new MailAddress(from);
tm.To.Add(new MailAddress(to));
tm.Subject = subject;
tm.Body = message;
tm.IsBodyHtml = true;
tm.Priority = MailPriority.Normal;
tm.SubjectEncoding = Encoding.UTF8;
var smtp = new SmtpClient();
{
smtp.Host = host;
smtp.Port = port;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
//default credentials
smtp.Credentials = new NetworkCredential(un,pw);
}
smtp.Send(tm);
MetroFramework.MetroMessageBox.Show(this, "Bulk Mail Successfully Sent.....", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void btnSendEmail2_Click(object sender, EventArgs e)
{
try
{
if (string.IsNullOrEmpty(txtSubject2.Text) || string.IsNullOrEmpty(txtMessage2.Text) || string.IsNullOrEmpty(txtFrom2.Text) || string.IsNullOrEmpty(txtEmailAddress2.Text) || string.IsNullOrEmpty(txtPassword2.Text) || string.IsNullOrEmpty(txtAttachment2.Text))
{
MetroFramework.MetroMessageBox.Show(this, "One Or More Fields Empty..Please Check To See Which Fields Are Empty,Before Sending Mails...", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
//send mails here
foreach(string i in lstEmails.Items)
{
if (i.Trim() != string.Empty)
{
//declare all fields
DataTable dt = new DataTable("tblEmails");
dt.Columns.Add("Email", typeof(string));
dt.Rows.Add(i.ToString());
string _from = txtFrom2.Text.Trim();
string _subject = txtSubject2.Text.Trim();
string _message = txtMessage2.Text.Trim();
string _host = Convert.ToString(ddlProvider2.SelectedItem);
int _port = 587;
string _un = txtEmailAddress2.Text.Trim();
string _pw = txtPassword2.Text.Trim();
Parallel.ForEach(dt.AsEnumerable(), x =>
{
SendMail1(_from, x["Email"].ToString(), _subject,_message
, _host, _port, _un, _pw);
});
// MetroFramework.MetroMessageBox.Show(this, i + "\n", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MetroFramework.MetroMessageBox.Show(this, "Please Load Some Emails To Send Mail Message...", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK);
}
}
您正在尝试批量发送电子邮件。如果这是“有时”工作,那么很可能是SMTP服务器拒绝您的邮件,如果您的发送速率高于管理员设置的阈值。如果是这种情况,您将无能为力,除非管理员更改其策略以适应您的应用程序。或者,您需要一个不同的SMTP服务(Amazon有一个,仅适用于像您这样的批量邮件应用程序)。哪一行抛出错误?SendMail1有效而SendMail2无效吗?错误消息是什么?这是显示错误smtp.Send(tm)的行;这就是错误:发送邮件失败。如果某些东西不起作用,请尽量使事情不那么复杂。拆下那个平行的。ForEach。无论如何,您的数据表中只有一行。当您尝试发送电子邮件时,您的价值观是什么?这是一个调试问题,请使用调试器。另外,我猜你没有使用正确的smtp地址发送电子邮件。试试这个和这个,这些都是发送限制的例子。