我可以在不通过 SMTP 服务器验证的情况下发送电子邮件吗?
Posted
技术标签:
【中文标题】我可以在不通过 SMTP 服务器验证的情况下发送电子邮件吗?【英文标题】:Can I send emails without authenticating on the SMTP server? 【发布时间】:2012-09-11 12:35:22 【问题描述】:我正在创建简单的电子邮件发送应用程序。在我的应用程序中,当我发送电子邮件时,我必须输入我的电子邮件地址或密码,但我不想使用密码,只想输入电子邮件
所以
我可以使用 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");
【问题讨论】:
您无法使用错误的凭据进行身份验证。换句话说,如果您有密码(而 gmail 需要密码),您将无法在不发送密码的情况下登录,因此您将无法发送任何内容。 为什么不在第一次登录后保存身份验证详细信息? 【参考方案1】:我可以使用 c#/.net 应用程序在不使用密码的情况下发送电子邮件吗?
是的,如果您可以访问不需要身份验证的电子邮件网关,您可以这样做:
SmtpClient mailClient = new SmtpClient("your.emailgateway.com");
mailClient.Send(message);
也许您的公司或 ISP 可以为您提供一个?
【讨论】:
【参考方案2】:一般来说,当然可以。在您的具体示例代码中,您使用的是不允许匿名发送的 GMail。
来自their references:
smtp.gmail.com(使用身份验证) 使用身份验证:是 端口为 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);
【讨论】:
以上是关于我可以在不通过 SMTP 服务器验证的情况下发送电子邮件吗?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何选项可以在不使用 Facebook Graph API 的情况下发布到用户朋友的墙上
Ajax 和 JavaScript,如何在不使用 JQuery 的情况下发布数组?