如何使用 "from" 字段中名字和姓氏的 gmail smtp 服务器发送电子邮件?

How to send email using gmail smtp server with first and last name in the "from" field?

我使用 Gmail 的 SMTP 服务器从 "Account Beta" 向 "Account Alpha" 发送电子邮件。 当我创建帐户 Beta 时,我将帐户的名字设置为 "Account",将其姓氏设置为 "Beta"。然后我手动向帐户 Alpha 发送了一封电子邮件,并从中将 Beta 添加到 Alpha 的联系人中,输入相同的名字和姓氏,甚至输入昵称 "Account Beta".

如果我手动将电子邮件从 Beta 发送到 Alpha,"from" 字段会正确显示 "Account Beta"。 但是,如果我通过代码发送它,它只会显示帐户 beta 的电子邮件。

这是我的代码:

        try
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("AccountBeta@gmail.com", "password"),
                EnableSsl = true
            };

            client.Send("AccountBeta@gmail.com", "AccountAlpha@gmail.com", subject, body);
        }
        catch (Exception e)
        {
            Console.WriteLine("An error occurred: " + e.Message);
        }

当然 subjectbody 是传递给方法的字符串,passwordAccountBeta@gmail.com 的实际密码替换。一旦这件事运行良好,我会用更好的安全来打扰自己。

正在替换
client.Send("AccountBeta@gmail.com", "AccountAlpha@gmail.com", subject, body);

client.Send("Account Beta", "AccountAlpha@gmail.com", subject, body);

抛出异常,表明 "Account Beta" 不是有效的电子邮件地址。

如何进行设置,以便通过我的代码发送的电子邮件在帐户 Alpha 的收件箱中显示为来自 "Account Beta"?

您可以使用 client.send 的第二个重载来实现,它需要 MailMessage

的对象

这里的 MailAddress 需要像 MailAddress(fromEmail,displayName)

这样的参数


 try
 {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("AccountBeta@gmail.com", 
               "password"),
                EnableSsl = true
            };

            var mailMessage = new MailMessage(new MailAddress("AccountBeta@gmail.com", "Account Beta"), new MailAddress("AccountAlpha@gmail.com"))
                {
                    Subject = subject,
                    Body = body,
                };

                client.Send(mailMessage); 
}
catch (Exception e)
{
            Console.WriteLine("An error occurred: " + e.Message);
}