我已在我的代码(new MailAddress("ActualFrom", "FriendlyFrom")
)和我的web.config
文件中指定了SMTP友好名称,但是一旦发送了电子邮件,友好名称就不存在了。在所有这些情况下,我都尝试了"Friendly Name" <ActualFrom@email.com>
(带引号)和Friendly Name <ActualFrom@email.com>
(没有引号),但两者都没有区别;两者都显示在收件箱中,来自电子邮件地址,没有友好名称。
更新:我将代码移到了另一台服务器上,然后就开始工作了。结果我的代码很好
<ノಠ益ಠ)ノ彡┻━┻那会是什么导致这种情况发生?答案 0 :(得分:3)
假设从配置文件中正确检索了信息,则无需任何其他设置即可运行:
protected void Page_Load(object sender, EventArgs e)
{
var message = new MailMessage
{
From = new MailAddress(fromAddress, "Friendly Name"),
Subject = "Test Friendly Name",
Body = "Friendly name works !"
};
message.To.Add(recipient);
var client = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
UseDefaultCredentials = false,
Credentials = new NetworkCredential
{
UserName = username,
Password = password
}
};
client.Send(message);
}
编辑:我刚刚使用我们域中的帐户/主机信息尝试了相同的代码,它的效果一样好:
答案 1 :(得分:3)
您可以在from
属性中尝试编码标记。
<smtp deliveryMethod="Network" from="Friendly Displayname <your.mail@domain.com>">
我知道这仍然无法解释为什么它可以在没有这种格式的其他服务器上运行。
答案 2 :(得分:2)
使用MailAddress的重载构造函数,就像在代码中一样。
我会删除配置中指定的友好名称。配置设置应该只列出电子邮件地址。
<强>更新强>
我用完全相同的设置编写了一个示例代码,并通过我们的内部邮件中继发送了电子邮件。电子邮件已正常发送,并在发送的电子邮件中显示友好名称。
我要检查的一件事是任何网络政策,如果网络中有任何网络政策,在内部/外部发送邮件时修剪友好名称显示。