回复电子邮件地址不起作用

时间:2012-01-06 03:35:32

标签: asp.net-mvc-3 gmail

我正在尝试在我的应用程序中发送一个电子邮件地址作为某人(电子邮件应该显示为好像是从那里发送的),但是无论何时我发送电子邮件,名称都显示为我提供的,但无论我是什么这样,电子邮件地址就是我用来验证的。

有没有办法让电子邮件显示为来自我指定的某个人,或者它是否总是显示为来自经过身份验证的电子邮件?

这是我的......

        using (var message = new MailMessage()
        {
            From = From != new MailAddress(From.Email, From.FormalName),
            Subject = Subject,
            Body = Body
        })
        {
            if (To != null)
            {
                foreach (var address in To)
                {
                    message.To.Add(new MailAddress(address.Email, address.FormalName));
                }
            }
            if (CC != null)
            {
                foreach (var address in CC)
                {
                    message.CC.Add(new MailAddress(address.Email, address.FormalName));
                }
            }
            var smtp = new SmtpClient
            {
                Host = "smtp.gmail.com",
                Port = 587,
                EnableSsl = true,
                DeliveryMethod = SmtpDeliveryMethod.Network,
                UseDefaultCredentials = false,
                Credentials = new NetworkCredential("myaccount", "mypassword")
            };
            message.IsBodyHtml = true;
            message.Headers.Add("Reply-To", message.From.Address);
            smtp.Send(message);
        }

2 个答案:

答案 0 :(得分:0)

看起来您期望Reply-To:标头指示邮件的来源。事实上,为此目的,有一个名为From:的标题。所以试试:

  message.Headers.Add("From", message.From.Address);

请注意,Gmail可能会添加一个Sender:标题(收件人的电子邮件客户端可能会显示,也可能不会显示),该标题会反映您用来发送邮件的实际帐户。

答案 1 :(得分:0)

从特定用户发送自动电子邮件时的最佳做法是使用“代表”语法(MailMessage中的ReplyTo或Sender)以及系统中的发件人地址,请参阅Sending "on behalf of" emails

然而,只要您的邮件服务器支持该地址并且接收邮件服务器不进行反向查找,您就可以将地址直接放入字符串中