这个问题被问了很多次,但我仍在努力找到一个有效的解决方案。
请考虑以下代码:
SmtpClient mailClient = new SmtpClient("outlook.office365.com");
MailMessage msgMail = new MailMessage();
msgMail.From = new MailAddress("validUser@domain.com", "displayName@aliasDomain.com");
mailClient.UseDefaultCredentials = false;
mailClient.Credentials = new NetworkCredential("validUser@domain.com", "password");
mailClient.EnableSsl = true;
MailAddress sendMailTo = new MailAddress("someValidUser@someValidDomain.com", "Mark Twain")
msgMail.To.Add(sendMailTo);
msgMail.Subject = "Test Subject";
msgMail.Body = "Email content";
msgMail.IsBodyHtml = true;
mailClient.Send(msgMail);
msgMail.Dispose();
当someValidUser
- 收件人 - 收到电子邮件时,我希望它显示显示名称:displayName@aliasDomain.com
,而不是注册到validUser@domain.com
帐户的用户名。
我怎样才能做到这一点?
答案 0 :(得分:1)
尝试将显示名称添加到邮件的标题中:
msgMail.Headers.Add("Sender", "displayName@aliasDomain.com");
我希望这会有所帮助。
答案 1 :(得分:0)
如果您重置MailMessage对象中的发件人地址,您应该能够从别名电子邮件地址发送。请参阅下面的完整代码。
var fromAddress = new MailAddress("root@bobloblaw.com", "Root");
var toAddress = new MailAddress("plaintiff@gmail.com", "Plaintiff");
string fromPassword = "password";
string subject = "Your Lawsuit";
string body = "I regret to inform you...";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body,
From = new MailAddress("bob@bobloblaw.com", "Bob Lob")
})
{
smtp.Send(message);
}
答案 2 :(得分:0)
如果您只是将别名添加到Office 365邮箱中,则可以使用此功能。然后在“发件人”字段中使用别名,并在凭据中使用原始的用户名和密码。
收件人将在“发件人”字段中看到您指定的名称+别名,而不是帐户的用户名。刚刚使用PowerShell Send-MailMessage以及C#进行了尝试。