Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.net中设置smtp凭据_C#_Email_Smtp_Email Validation - Fatal编程技术网

C# 如何在.net中设置smtp凭据

C# 如何在.net中设置smtp凭据,c#,email,smtp,email-validation,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.Sub

我有一个联系我们的网页,用户填写的内容和内容发送到电子邮件喜欢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中设置。有没有办法动态设置密码

你想要这样的东西

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

我认为您必须将“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;

如果密码更改,则您的代码需要更改,或者将密码放入配置文件中,这样您就不需要重新编译.tnx,因此您的意思是无法动态设置pass。在应用程序中设置SMTP时,使用“真实”用户未使用的帐户是正常的个人,仅用于发送电子邮件的应用程序。这样你就不需要更改密码了。