如何使用 "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);
}
当然 subject
和 body
是传递给方法的字符串,password
被 AccountBeta@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);
}
我使用 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);
}
当然 subject
和 body
是传递给方法的字符串,password
被 AccountBeta@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);
}