C# 使用SMTP从别名地址发送电子邮件

C# 使用SMTP从别名地址发送电子邮件,c#,smtp,C#,Smtp,这个问题已经被问了很多次,但我仍在努力寻找一个有效的解决方案 请考虑下面的代码: SmtpClient mailClient = new SmtpClient("outlook.office365.com"); MailMessage msgMail = new MailMessage(); msgMail.From = new MailAddress("validUser@domain.com", "displayName@aliasDomain.com");

这个问题已经被问了很多次,但我仍在努力寻找一个有效的解决方案

请考虑下面的代码:

    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();
当收件人收到电子邮件时,我希望它显示显示名称:
displayName@aliasDomain.com
与注册到
validUser@domain.com
帐户


如何实现此目的?

尝试将显示名称添加到邮件标题中:

msgMail.Headers.Add("Sender", "displayName@aliasDomain.com");

我希望这会有所帮助。

如果您在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); 
}

如果您只需将别名添加到Office 365邮箱中,此功能就可以正常工作。然后使用“发件人”字段中的别名和凭据的原始用户名+密码


收件人将看到您在“发件人”字段中指定的名称+别名,而不是帐户的用户名。刚刚用PowerShell Send MailMessage和C#尝试了这个功能。

这可能与您的问题有关吗?是的,这正是我想要实现的,但我使用的不是Gmail,而是Outlook的SMTP服务器。。同样的道理?@GekaP你能分享更多的信息吗?我想这取决于你的smtp服务器。例如,上面的方法对我来说没有问题,我使用的是Office 365邮件服务。他们的smtp服务器不关心您在MailMessage类中提供的显示名-它总是被您的365邮件帐户上配置的显示名覆盖。我尝试了很多不同的方法,但不幸的是,这些方法无能为力。我想换一个支持这个选项的邮件服务。