使用SMTP

时间:2017-08-15 09:37:42

标签: c# smtp

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

请考虑以下代码:

    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帐户的用户名。

我怎样才能做到这一点?

3 个答案:

答案 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#进行了尝试。