我试图了解如何在System.Net.Mail库中使用From地址。
为了论证,我将以谷歌为例。您将在下面找到我用来发送电子邮件的代码。
var message = new MailMessage();
message.To.Add(new MailAddress("john.doe@gmail.com")); // replace with valid value
message.From = new MailAddress("test@gmail.com"); // replace with valid value
message.Subject = "Testing ASP.NET Email system";
message.Body = "This is my test email";
message.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
var credential = new NetworkCredential
{
UserName = "test@gmail.com", // replace with valid value
Password = "abc123" // replace with valid value
};
smtp.Credentials = credential;
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
await smtp.SendMailAsync(message);
}
我想要了解的是为什么我需要设置From地址以及它的重点。发送电子邮件时,您登录的电子邮件凭据是否应该是发件人电子邮件?这是否意味着我可以登录test@gmail.com但是当收件人收到电子邮件时,如果我把john作为From部分,它会说john@gmail.com?
这是如何运作的?
答案 0 :(得分:2)
来自简单地说,您的电子邮件客户端将如何显示来自电子邮件的内容。只要它与实际邮件服务器位于同一(子)域,大多数客户端都会允许它,否则您可能会收到如下警告:
您可以发送的原因是指定发件人地址是因为邮件服务器不一定具有“帐户”#39;与托管提供商(gmail,hotmail等)的方式相同。 @
之前的说明符只是收件箱组织的一种方式。对于外发邮件,从技术角度来看,它不是必需的,因为实际的发件人是您的邮件服务器,而不是您的收件箱。
公共邮件服务器很可能会阻止您恶意欺骗地址(例如dan@gmail.com
可能会在尝试从rob@gmail.com
发送时拒绝其请求)但有关此问题的详细信息。我不确定。
例如,这是我收到的电子邮件的摘录:
收到:来自mta.email.auspost.com.au(mta.email.auspost.com.au。
[207.67.38.247])由mx.google.com提供ESMTP标识
qg3si8833298pbb.100.2015.11.18.19.17.54...
收到:mta.email.auspost.com.au id h9kvm4163hs8 for
< == snip==@gmail.com> ;; 2015年11月18日星期三21:01:47 -0600(信封 - 来自 )
来自:"澳大利亚邮政" < noreply@email.auspost.com.au>
(gmail示例。来源: http://www.groovypost.com/wp-content/uploads/2013/05/image20.png)