我如何在asp.net中显示传递消息? 我将这段代码用于我的工作,但这段代码没有回复我。因为我想要显示消息传递
public string sendemail(String strFrom, string strTo, string strSubject, string strBody)
{
string delivery;
Array arrToArray;
char[] splitter = { ';' };
arrToArray = strTo.Split(splitter);
MailMessage mm = new MailMessage();
mm.From = new MailAddress(strFrom);
mm.Subject = strSubject;
mm.Body = strBody;
//mm.IsBodyHtml = IsBodyHTML;
mm.ReplyTo = new MailAddress("toMail@yahoo.com");
foreach (string s in arrToArray)
{
mm.To.Add(new MailAddress(s));
}
SmtpClient smtp = new SmtpClient();
try
{
smtp.Host = "smtp.mail.yahoo.com";
smtp.EnableSsl = true; //Depending on server SSL Settings true/false
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = "fromMail@yahoo.com";
NetworkCred.Password = "pass";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;//Specify your port No;
smtp.Send(mm);
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
delivery = mm.DeliveryNotificationOptions.ToString();
}
catch
{
mm.Dispose();
smtp = null;
delivery = mm.DeliveryNotificationOptions.ToString();
}
return delivery;
}
protected void btnSend_Click(object sender, EventArgs e)
{
Thread threadSendMails;
threadSendMails = new Thread(delegate()
{
Label1.Text = sendemail("fromMail@yahoo.com", "toMail@yahoo.com", "Hello", "<p>Body</p>");
});
threadSendMails.IsBackground = false ;
threadSendMails.Start();
}
答案 0 :(得分:2)
由于SMTP协议的设计,您无法确定邮件是否实际到达了收件人。您只能确定服务器已接受该消息。传递通知仅在某些目标邮件服务器中实现,而读取通知主要是客户端事物。如果他们被写入,他们将通过邮件发送到发件人的地址。要捕获这些内容,您需要监控POP3或IMAP框,或者您拥有的任何内容。
此外:您应该考虑不使用线程 - 这可能很容易导致难以调试奇怪的行为。
答案 1 :(得分:0)
我认为没有必要在单独的线程中发送电子邮件。
相反,您只需调用sendemail
或其他在btnSend_click
事件处理程序中实现电子邮件发送的方法。
此外,没有同步方式显示您发送的电子邮件的发送消息。
如果您只想向网站用户显示成功消息,则需要在标记文件(.aspx)中声明一些asp:Label
控件,默认情况下使其不可见,并在{{1就像那样:
btnSend_click