如何在.net中设置smtp凭证

时间:2014-07-03 08:04:58

标签: c# email smtp email-validation

我有一个联系我们页面,用户填写内容和内容发送到电子邮件,如 info@mywebsitename.com 。在.net中我们为smtp定义凭证:

        var body = c.Subject.ToString() + " from: " + c.Name + " " + c.Email + "\n\n" + c.Body;
        var mailMessage = new MailMessage(c.Email, "info@mysitename.com", c.Subject.ToString(), body);
        var mailAddr = new MailAddress(c.Email);
        var smtpClient = new SmtpClient();
        smtpClient.Host = "mail.mysitename.com";
        **smtpClient.Credentials = new NetworkCredential("info@mysitename.com", "Test123");**
        smtpClient.send();

任何效果都很好。

但如果用户更改 info@mywebsitename.com 的密码,则此凭据无效。用户可以访问密码并更改密码,这是一项人权!所以如何有效的凭证,客户可以发送电子邮件到信息,网站所有者可以回复他们,并可以更改密码。

我知道可以在web.config中设置。是否有动态设置密码的方法。

2 个答案:

答案 0 :(得分:1)

你想要这样的东西。

<system.net>
    <mailSettings>
        <smtp from="email@yourdomain.com" deliveryMethod="Network">
            <network defaultCredentials="false" host="yourdomain" password="password" userName="username"/>
        </smtp>
    </mailSettings>
</system.net>

答案 1 :(得分:0)

我认为您必须将'SmtpClient'的属性'UseDefaultCredentials'设置为false。根据您的电子邮件服务器,您最终必须将“EnableSsl”设置为true。以下是我用于成功连接到Gmail的代码示例:

SmtpClient smtp = new SmtpClient("smtp.googlemail.com");
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("myaccountname@gmail.com", "mypassword");
smtp.EnableSsl = true;