C# 在asp.net中发送邮件并显示传递消息

C# 在asp.net中发送邮件并显示传递消息,c#,asp.net,C#,Asp.net,如何在asp.net中显示传递邮件? 我在工作中使用此代码,但此代码没有回复我。因为我想显示消息传递 public string sendemail(String strFrom, string strTo, string strSubject, string strBody) { string delivery; Array arrToArray; char[] splitter = { ';' }; arrToArray

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

    }
公共字符串发送电子邮件(字符串strFrom、字符串strTo、字符串strSubject、字符串strBody)
{
字符串传递;
阵列阵列;
char[]拆分器={';'};
arrToArray=标准拆分器(拆分器);
MailMessage mm=新邮件();
mm.From=新邮件地址(strFrom);
mm.主题=主题主题;
mm.车身=车身;
//mm.IsBodyHtml=IsBodyHtml;
mm.ReplyTo=新邮件地址(“toMail@yahoo.com");
foreach(arrToArray中的字符串s)
{
mm.添加(新邮件地址);
}
SmtpClient smtp=新SmtpClient();
尝试
{
smtp.Host=“smtp.mail.yahoo.com”;
smtp.EnableSsl=true;//取决于服务器SSL设置true/false
System.Net.NetworkCredential NetworkCred=新系统.Net.NetworkCredential();
NetworkCred.UserName=”fromMail@yahoo.com";
NetworkCred.Password=“pass”;
smtp.UseDefaultCredentials=true;
smtp.Credentials=NetworkCred;
smtp.Port=587;//指定端口号;
smtp.Send(mm);
mm.DeliveryNotificationOptions=DeliveryNotificationOptions.OnSuccess;
delivery=mm.DeliveryNotificationOptions.ToString();
}
抓住
{
mm.Dispose();
smtp=null;
delivery=mm.DeliveryNotificationOptions.ToString();
}
退货;
}
受保护的无效BTN发送\单击(对象发送方,事件参数e)
{
线程发送邮件;
threadSendMails=新线程(委托()
{
Label1.Text=发送电子邮件(“fromMail@yahoo.com", "toMail@yahoo.com“,”您好“,”正文

”; }); threadSendMails.IsBackground=false; threadSendMails.Start(); }
由于SMTP协议的设计,您无法确定邮件是否已实际到达收件人。您只能确保服务器已接受该消息。传递通知仅在一些目标邮件服务器中实现,而读取通知主要是客户端的事情。如果他们是书面的,他们将通过邮件发送到发件人的地址。要捕获这些信息,您需要监视POP3或IMAP框,或者您拥有的任何东西


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

我认为没有必要在单独的线程中发送电子邮件。 相反,您可以调用
sendmail
或在
btnSend\u单击事件处理程序中实现电子邮件发送的另一个方法

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

如果您只想向您的网站用户显示成功消息,则需要在标记文件(.aspx)中声明一些
asp:Label
控件,默认情况下使其不可见,然后在
btn发送中显示它,如下所示:

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
}
protectedvoidbtnsend\u单击(对象发送者,事件参数e)
{
发送电子邮件(“fromMail@yahoo.com", "toMail@yahoo.com“,”您好“,”正文

”; 标签1.可见=真; //假设您有ID为“Label1”的asp:Label控件 //“可见”属性设置为false }
如果我不使用线程,那么发送电子邮件需要一些时间,用户应该等待邮件发送。我使用线程的优点是用户在发送邮件时执行其他操作。您的用户体验是正确的,但发送电子邮件并不是一个耗时的操作。你们不会从中得到任何好处。若我不使用线程,那个么发送电子邮件需要一些时间,用户应该等到邮件发送。我使用线程的好处是用户在发送邮件时执行其他操作sending@Shima我自己编写了一个小程序,它使用一个包含描述邮件的文件的目录。它为每个文件创建一个邮件。我正在使用来自web的工具,一些预定的工作,因此我可以微调邮件处理(限制为每分钟一定数量的邮件,等等)。你也可以做类似的事情,但我建议你只有在有大量邮件或特殊要求的情况下才这样做(就像我一样)。总的来说,ilyabreev是正确的,发送邮件(没有大的附件)通常是很快的。你能给我你的程序吗?对不起,因为我是为我的雇主写的,我不允许传递它。但是你可以看看。也许这有帮助