提问者:小点点

电子邮件支持部分,用户地址为“发件人地址”


我需要在我们的应用程序中实现一个“电子邮件支持”部分。因此,电子邮件“收件人”地址将是admin@mydomain.com,而发件人地址将是最终用户的电子邮件地址。(最终用户的电子邮件地址可能位于同一域或其他域,如user@mydomain.com或user@gmail.com)。

在应用程序中,我使用admins帐户详细信息(用户名和密码)对电子邮件进行了身份验证

System.Net.NetworkCredential("admin@mydomain.com", adminpassword);

此外,我正在使用主机地址为“mail.mydomain.com”的问题是,我得到以下错误:

“邮箱不可用。服务器的响应是:发件人地址必须匹配已验证的地址“错误消息。

是否可以使用正确的发件人电子邮件地址(用户发件人地址)发送电子邮件

我的代码示例是

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

共2个答案

匿名用户

一般来说,发件人地址不应该是用户本身,它应该是一个内部系统地址。这主要是因为实际发送电子邮件的不是用户,而是应用程序。在电子邮件本身中,您可以指定哪个用户发送了它(以及他们的电子邮件地址是什么)。您甚至可以在消息的ReplyTo字段中指定用户的电子邮件地址。

但是您从SMTP服务器获得的消息几乎说明了一切。如果邮件“来自”该用户,则SMTP服务器会拒绝它,因为它对身份验证和电子邮件的来源很敏感。对于SMTP服务器(对于我想像中的任何SMTP服务器),看起来您正在尝试欺骗消息。

匿名用户

您不能做您正在做的事情,因为SMTP服务器不允许您“模拟”用户的电子邮件地址发送到系统。谢天谢地,情况就是这样,否则人们就会冒用别人的名字向每个人发送垃圾邮件。

为什么要让用户看起来像是在向应用程序发送电子邮件?为什么不在应用程序中创建一个支持部分,用户可以在其中向系统“提交”支持请求,然后如果您想要向用户发送电子邮件,那么您的场景也可以工作,但情况正好相反(系统是from地址,用户是to地址)。