C# 使用asp发送电子邮件

C# 使用asp发送电子邮件,c#,asp.net,visual-studio,email,C#,Asp.net,Visual Studio,Email,我在我的网站上有一个电子邮件表单,它非常有效。我唯一想做的就是添加usings以获得更好的编码,最好的方法是什么?我使用的代码如下所示: try { //create message MailMessage msg = new MailMessage(); msg.To.Add(txtTo.Text); msg.From = new MailAddres

我在我的网站上有一个电子邮件表单,它非常有效。我唯一想做的就是添加usings以获得更好的编码,最好的方法是什么?我使用的代码如下所示:

            try
            {
            //create message
            MailMessage msg = new MailMessage();
            msg.To.Add(txtTo.Text);
            msg.From = new MailAddress(txtFrom.Text);
            msg.Subject = string.Format("Van: " + txtName.Text + " | Email: " + txtFrom.Text + " | Onderwerp: " + txtSubject.Text);
            msg.Body = txtBericht.Text;

            SmtpClient smtp = new SmtpClient("");
            smtp.Host = "smtp.live.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;

            smtp.Credentials = new NetworkCredential("emailaddress", "pass");

                smtp.Send(msg);
                ClearTextboxes();
                lblError.ForeColor = Color.Green;
                lblError.Text = "Het verzenden van uw e-mail is gelukt!";
            }
            catch
            {
                lblError.ForeColor = Color.Red;
                lblError.Text = "Er ging iets mis met het versturen van de email."; 
            }
  try
            {
            //create message
                using (MailMessage msg = new MailMessage())
                {

                     //create message
            MailMessage msg = new MailMessage();
            msg.To.Add(txtTo.Text);
            msg.From = new MailAddress(txtFrom.Text);
            msg.Subject = string.Format("Van: " + txtName.Text + " | Email: " + txtFrom.Text + " | Onderwerp: " + txtSubject.Text);
            msg.Body = txtBericht.Text;

                    using (SmtpClient smtp = new SmtpClient())
                    {
                        smtp.Host = "smtp.live.com";
                        smtp.Port = 587;
                        smtp.EnableSsl = true;

                        smtp.Credentials = new NetworkCredential("emailadress", "pass");

                        smtp.Send(msg);
                    }
                    ClearTextboxes();
                    lblError.ForeColor = Color.Green;
                    lblError.Text = "Het verzenden van uw e-mail is gelukt!";
                }          
            }
            catch
            {
                lblError.ForeColor = Color.Red;
                lblError.Text = "Er ging iets mis met het versturen van de email."; 
            }
如何在此代码上使用usings? 当我上传我的网站时,填写我的电子邮件地址和密码是安全的,还是应该使用其他方法

提前谢谢

编辑:

我将代码更改为以下内容:

            try
            {
            //create message
            MailMessage msg = new MailMessage();
            msg.To.Add(txtTo.Text);
            msg.From = new MailAddress(txtFrom.Text);
            msg.Subject = string.Format("Van: " + txtName.Text + " | Email: " + txtFrom.Text + " | Onderwerp: " + txtSubject.Text);
            msg.Body = txtBericht.Text;

            SmtpClient smtp = new SmtpClient("");
            smtp.Host = "smtp.live.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;

            smtp.Credentials = new NetworkCredential("emailaddress", "pass");

                smtp.Send(msg);
                ClearTextboxes();
                lblError.ForeColor = Color.Green;
                lblError.Text = "Het verzenden van uw e-mail is gelukt!";
            }
            catch
            {
                lblError.ForeColor = Color.Red;
                lblError.Text = "Er ging iets mis met het versturen van de email."; 
            }
  try
            {
            //create message
                using (MailMessage msg = new MailMessage())
                {

                     //create message
            MailMessage msg = new MailMessage();
            msg.To.Add(txtTo.Text);
            msg.From = new MailAddress(txtFrom.Text);
            msg.Subject = string.Format("Van: " + txtName.Text + " | Email: " + txtFrom.Text + " | Onderwerp: " + txtSubject.Text);
            msg.Body = txtBericht.Text;

                    using (SmtpClient smtp = new SmtpClient())
                    {
                        smtp.Host = "smtp.live.com";
                        smtp.Port = 587;
                        smtp.EnableSsl = true;

                        smtp.Credentials = new NetworkCredential("emailadress", "pass");

                        smtp.Send(msg);
                    }
                    ClearTextboxes();
                    lblError.ForeColor = Color.Green;
                    lblError.Text = "Het verzenden van uw e-mail is gelukt!";
                }          
            }
            catch
            {
                lblError.ForeColor = Color.Red;
                lblError.Text = "Er ging iets mis met het versturen van de email."; 
            }

永远不要在代码中放入身份验证信息。将它放在web.config中,并在需要的地方引用它。如果您更改密码,您还可以省去在任何地方查找密码的麻烦。

切勿在代码中添加身份验证信息。将它放在web.config中,并在需要的地方引用它。如果你更改了密码,那么你就不用到处寻找你使用过的密码了


我建议使用web.config设置主机、用户名和密码。例如

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="name@domain.com">
            <network host="smtp.mail.com" 
                     userName="name@domain.com" 
                     password="blog.dotnetclr.com" port="25"/>
        </smtp>
    </mailSettings>
</system.net>

我建议使用web.config设置主机、用户名和密码。例如

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="name@domain.com">
            <network host="smtp.mail.com" 
                     userName="name@domain.com" 
                     password="blog.dotnetclr.com" port="25"/>
        </smtp>
    </mailSettings>
</system.net>

可以对MailMessage和SMTP客户端对象使用

           //create message
           using (SmtpClient smtp = new SmtpClient(""))
           using( MailMessage msg = new MailMessage())
           {

                // Your code

           }

可以对MailMessage和SMTP客户端对象使用

           //create message
           using (SmtpClient smtp = new SmtpClient(""))
           using( MailMessage msg = new MailMessage())
           {

                // Your code

           }


你想干什么?处理SmtpClient?你想做什么?处置SmtpClient?除非我完全误解了这一点,否则这实际上并不能回答问题。事实上,它回答了一半,而@Nikita的答案也回答了我问题的一半。Richard,如果我使用Windows身份验证并且只想指定主机是否正确,将smtp设置放入.config是否更好?它只在一个页面中使用一次。我将任何身份验证信息,或将来可能更改的与应用程序功能相关的任何信息都放在web.config中。这是一个易于管理和更改信息的地方。在代码中添加任何识别信息可能会在将来引发问题…除非我完全误解了这一点,否则这实际上并不能回答问题。事实上它回答了一半,而@Nikita的答案也回答了我问题的一半。Richard,如果我使用Windows身份验证,并且只考虑我指定的主机是否为,那么将smtp设置放入.config会更好吗?它只在一个页面中使用一次。我将任何身份验证信息,或将来可能更改的与应用程序功能相关的任何信息都放在web.config中。这是一个易于管理和更改信息的地方。将任何标识信息放入代码本身可能会在将来导致问题……我是否应该同时为这两种代码执行此操作,这是更好的编码方式?将邮件消息放入using语句的价值是什么?SmtpClient使用您想要处置的资源,但对MailMessage是否同样适用?我认为对SmtpClient使用“using”比对MailMessage使用“using”更明智,因为GC最终将进行清理,但我们正在尝试对两者进行确定性终结。。希望这是有意义的…我应该为两者都这样做吗,这是更好的编码吗?将邮件消息放入using语句的价值是什么?SmtpClient使用您想要处置的资源,但对MailMessage是否同样适用?我认为对SmtpClient使用“using”比对MailMessage使用“using”更明智,因为GC最终将进行清理,但我们正在尝试对两者进行确定性终结。。希望它有意义…web.config的第一个片段对我帮助很大,我今天投了很多票,所以我明天会投票给你我一天的第一个工作:web.config的第一个片段对我帮助很大,我今天投了很多票,所以我明天会投票给你我一天的第一个工作: