2

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

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

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);
4

3 回答 3

3

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

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

于 2013-07-18T13:07:18.950 回答
0

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

你为什么要让它看起来用户正在向应用程序发送电子邮件?为什么不只是在您的应用程序中设置一个支持部分,用户可以在其中向系统“提交”支持请求,然后如果您想向用户发送电子邮件,那么您的方案将起作用,但正好相反(系统所在的位置)From地址和用户是地址To)。

于 2013-07-18T13:07:09.190 回答
0

我使用 Golang,我将“发件人”放入消息中

msg := []byte(
    "From: root@myserver.com.br\r\n" +
    "To: destiny@myserver.com\r\n" +
    "cc: destiny2@myservercom\r\n" +
    "Subject: Why are you not using Mailtrap yet?\r\n"+
    "\r\n"+
    "Here’s the space for our great sales pitch\r\n")

auth := smtp.PlainAuth("", root, password, host)
err := smtp.SendMail(address, auth, root, destinationEmail, msg)
于 2022-01-17T12:52:19.060 回答