2013-07-18 53 views
0

我需要在我们的应用程序中实施“电子邮件支持”部分。因此,电子邮件地址将为[email protected],地址为最终用户的电子邮件地址(最终用户的电子邮件地址可能位于相同的域或其他域,如[email protected]或用户@ gmail.com)。电子邮件支持部分的用户地址为“发件人地址”

在我使用验证管理员帐户的详细信息(用户名和密码)

System.Net.NetworkCredential("[email protected]", adminpassword); 

而且我使用的主机地址的电子邮件应用程序“mail.mydomain.com” 问题是我正在以下错误:

“Mailbox unavailable. The server response was: From address must match authenticated address” error message.

是否有可能用正确的发件人的电子邮件地址发送电子邮件(从地址的用户)

我的代码示例是

message.To.Add(“[email protected]”); 
message.From = new MailAddress(“[email protected]”); 
message.IsBodyHtml = true; 
message.BodyEncoding = Encoding.UTF8; 
var smtp = new SmtpClient("mail.mydomain.com"); 
smtp.Credentials = new System.Net.NetworkCredential([email protected], adminpassword); 
smtp.EnableSsl = false; 
object usrtkn = message; 
smtp.Send(message); 

回答

0

你不能这样做,你在做什么,因为SMTP服务器是不是允许你发送到系统“模拟”用户的电子邮件地址。并且谢天谢地,情况就是如此,否则人们会以别人的名义发送/欺骗所有人。

你为什么试图让它显示用户正在向应用程序发送电子邮件?为什么不只是有一个应用程序的支持部分,用户可以“提交”支持系统的请求,然后如果你想发送电子邮件给用户,那么你的方案将工作,但只是在相反(系统是地址为From,用户为To地址)。

1

一般而言,From地址不应该是用户本身,它应该是一个内部系统地址。这主要是因为用户实际上并没有发送电子邮件,应用程序是。在电子邮件本身中,您可以指定哪个用户发送了它(以及他们的电子邮件地址是什么)。您甚至可以在邮件的the ReplyTo field中指定用户的电子邮件地址。

但你从SMTP服务器收到的消息几乎说明了一切。如果该消息是来自该用户的“来自”,则SMTP服务器拒绝该消息,因为它对于电子邮件的认证和发起非常敏感。到SMTP服务器(我想象到任何SMTP服务器),它看起来像你试图欺骗邮件。

+0

很高兴看到你对这个场景中'user'和'system'应该扮演的角色有相同的解释。 :-) –

+1

@KarlAnderson:同意。我经常看到有人试图从审计线索中删除软件,并使其看起来像用户直接做所有事情,但事实并非如此。 (http://publicvoidlife.blogspot.com/2012/05/case-for-service-accounts.html)应用程序本身就是后端服务的用户,应该这样对待。 – David

相关问题