在asp.net中发送邮件和显示传递消息

时间:2013-12-29 08:45:15

标签: c# asp.net

我如何在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();

    }

2 个答案:

答案 0 :(得分:2)

由于SMTP协议的设计,您无法确定邮件是否实际到达了收件人。您只能确定服务器已接受该消息。传递通知仅在某些目标邮件服务器中实现,而读取通知主要是客户端事物。如果他们被写入,他们将通过邮件发送到发件人的地址。要捕获这些内容,您需要监控POP3或IMAP框,或者您拥有的任何内容。

此外:您应该考虑不使用线程 - 这可能很容易导致难以调试奇怪的行为。

答案 1 :(得分:0)

我认为没有必要在单独的线程中发送电子邮件。 相反,您只需调用sendemail或其他在btnSend_click事件处理程序中实现电子邮件发送的方法。

此外,没有同步方式显示您发送的电子邮件的发送消息。

如果您只想向网站用户显示成功消息,则需要在标记文件(.aspx)中声明一些asp:Label控件,默认情况下使其不可见,并在{{1就像那样:

btnSend_click