我可以在SMTP服务器上发送未经身份validation的电子邮件吗?

我正在创建简单的电子邮件发送应用 在我的应用程序,当我发送电子邮件时,我必须把我的电子邮件地址或密码,但我不想使用密码只想放电子邮件

所以

我可以使用c#/ .net应用程序不使用密码发送电子邮件吗?

这是我的代码:

try { // setup mail message MailMessage message = new MailMessage(); message.From = new MailAddress(textBox1.Text); message.To.Add(new MailAddress(textBox2.Text)); message.Subject = textBox3.Text; message.Body = richTextBox1.Text; // setup mail client SmtpClient mailClient = new SmtpClient("smtp.gmail.com"); mailClient.Credentials = new NetworkCredential(textBox1.Text,"password"); // send message mailClient.Send(message); MessageBox.Show("Sent"); } catch(Exception) { MessageBox.Show("Error"); } 

我可以使用c#/ .net应用程序不使用密码发送电子邮件吗?

是的,如果您有权访问不需要身份validation的电子邮件网关,您可以执行以下操作:

 SmtpClient mailClient = new SmtpClient("your.emailgateway.com"); mailClient.Send(message); 

也许您的公司或ISP可以为您提供一个?

一般来说,你可以,当然。 在您的具体示例代码中,您使用的是GMail,它不允许匿名发送。

从他们的参考 :

smtp.gmail.com(使用身份validation)
使用身份validation:是的
TLS / STARTTLS的端口:587
SSL端口:465

关于catch子句的附加注释:

在我看来,你严重滥用了这个例外的想法。 更好的方法是:

 catch(Exception x) { var s = x.Message; if ( x.InnerException!=null ) { s += Environment.NewLine + x.InnerException.Message; } MessageBox.Show(s); }