簡體   English   中英

在asp.net中發送郵件並顯示傳遞消息

[英]send mail and show delivery message in 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();

    }

由於SMTP協議的設計,您不能確定郵件實際上已到達收件人。 您只能確定服務器已接受該消息。 傳遞通知僅在某些目標郵件服務器中實現,而讀取通知主要是客戶端。 如果他們是書面的,他們將通過郵件發送到發件人的地址。 要捕獲這些,您需要監視POP3或IMAP框,或任何您擁有的框。

另外:您應該考慮不使用線程-這很容易導致難以調試怪異的行為。

我認為沒有必要在單獨的線程中發送電子郵件。 相反,您可以只調用sendemail或在btnSend_click事件處理程序中實現電子郵件發送的其他方法。

此外,沒有同步方式來顯示您發送的電子郵件的傳遞消息。

如果您只想向網站用戶顯示成功消息,則需要在標記文件(.aspx)中聲明一些asp:Label控件,默認情況下使其不可見,並在btnSend_click其顯示為:

protected void btnSend_Click(object sender, EventArgs e)
{
    sendemail("fromMail@yahoo.com", "toMail@yahoo.com", "Hello", "<p>Body</p>");
    Label1.Visible = true;
    // assuming you have asp:Label control with ID "Label1" 
    // and "Visible" property set to false
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM