Skip to main content
 首页 » 编程设计

c#之通过 smtp 匿名发送电子邮件

2024年02月13日30me-sa

我一直在尝试为我的一个应用程序添加支持服务,所以我决定编写一种方法,将用户反馈发送到我的个人电子邮件。根据 MSDN:

If the UseDefaultCredentials property is set to false and the Credentials property has not been set, then mail is sent to the server anonymously.

但是当我将 UseDefaultCredentials 设置为 false 时,没有任何内容发送到我的电子邮件:

        MailMessage mail = new MailMessage("MyEmail@gmail.com", "MyEmail@gmail.com"); 
        SmtpClient client = new SmtpClient(); 
        client.Port = 25; 
        client.DeliveryMethod = SmtpDeliveryMethod.Network; 
        client.UseDefaultCredentials = false; 
        client.Host = "smtp.google.com"; 
        mail.Subject = "this is a test email."; 
        mail.Body = "this is my test email body"; 
        client.Send(mail) 

我的问题是,这个问题是否与 Gmail 相关,或者我这样做的方式有什么问题。

请您参考如下方法:

没有更多细节,很难确定问题出在哪里。如果将 UseDefaultCredentials 设置为 true,它会起作用吗?

SMTP 需要注意的标准问题:

  • 大多数 ISP 会阻止端口 25,因此您不能使用非 SSL/TLS SMTP,除非是本地服务器或特殊情况。

  • 据我所知,GMail 的 SMTP 只接受经过身份验证的登录进行邮件传输。

根据我的经验,使用经过身份验证的 gmail 帐户(带密码)和 TLS(加密)连接(不是端口 25)几乎可以在任何地方正常工作,但可能不适合您的应用程序,因为您没有用户的 Gmail 凭据。

如果所有这些都很麻烦,您可能会考虑的一种标准替代方法是在您自己的网站上支持您自己的基于表单的反馈提交流程,而不是通用电子邮件。