2009-12-15 308 views
1

我有一个需要发送电子邮件的应用程序。目前,这是我在用的:C# - 无需登录服务器即可发送电子邮件

 System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage(); 
     MyMailMessage.From = new System.Net.Mail.MailAddress(fromemail.Text); 
     MyMailMessage.To.Add(toemail.Text); 
     MyMailMessage.Subject = subject.Text; 
     MyMailMessage.Body = body.Text; 
     System.Net.Mail.SmtpClient SMTPServer = new System.Net.Mail.SmtpClient("smtp.gmail.com"); 
     SMTPServer.Port = 587; 
     SMTPServer.Credentials = new System.Net.NetworkCredential("email", "password"); 
     SMTPServer.EnableSsl = true; 
     SMTPServer.Send(MyMailMessage); 

有一个简单的方法来发送电子邮件,而无需登录到服务器?谢谢。

+0

我很好奇你为什么需要这个?是否因为你不想在你的应用程序中配置设置?或向用户展示u/p? – Rippo 2009-12-15 08:38:10

+0

不确定“u/p”是什么意思。这是一个将消息发送到手机的短信应用程序。它使用运营商的电子邮件扩展。所以它就像标准的电子邮件一样发送。 – user 2009-12-15 08:41:16

+0

u/p - >用户名/密码 – liggett78 2009-12-15 08:51:58

回答

0

您需要一个不需要身份验证的SMTP服务器,但要停止它作为SPAM服务器,它需要其他类型的防护,如防火墙。

+0

所以我需要一个开放的中继服务器?我能找到一个不会被列入黑名单的地方吗? – user 2009-12-15 08:30:22

+0

你不可能找到可靠的。最好的选择是安全地创建一个新帐户并进行身份验证,或者设置您自己的服务器。 – cjk 2009-12-15 08:32:35

+1

当你说安全地进行身份验证时,你的意思是我会在程序中硬编码登录凭证吗?如果是这样,我怎么会这样做,没有他们暴露于一个简单的反编译器? – user 2009-12-15 08:34:48

1

GMail的SMTP服务器始终需要验证。您可能需要设置自己的服务器才能发送电子邮件而无需身份验证

1

将SMTP服务器配置到本地网络(在防火墙后面以避免成为垃圾邮件源)并直接使用它。您可以在IIS中创建一个。

+0

问题是,其他人会在我的网络之外使用它。 – user 2009-12-15 08:35:22

+0

然后为您的应用程序在内部使用smtp服务器创建一个wcf服务,因此您只为应用程序提供外部接口,但不提供打开的smtp服务器。 – jmservera 2009-12-15 08:43:15

1

有2种方式来实现这一目标:

1)使用本地SMTP服务器(例如一个与IIS Win2003的/ 2008服务器上)和消息写入本地拾取队列)。这是可能的最小的变化。

2)您需要解析目标smtp服务器。例如,当您想在msn.com上向某人发送电子邮件时,您需要获取msn.com的MX记录,例如像mx1.msn.com。然后,您可以直接连接到此SMTP服务器并将您的电子邮件发送给(本地)收件人。请注意,没有内置的方式可以解析.NET中的MX主机(因为在Dns类中没有任何方法可以实现这一点) - 您需要“手动”执行此操作。大多数SMTP主机也会拒绝来自家庭/住宅IP地址的连接。

相关问题