【问题标题】:How to use any email address in the FROM field while sending email through Gmail SMTP?通过 Gmail SMTP 发送电子邮件时,如何使用 FROM 字段中的任何电子邮件地址?
【发布时间】:2012-09-28 23:09:53
【问题描述】:

我正在尝试使用以下代码在 C# 中使用 gmail SMTP 发送电子邮件

MailMessage message = new MailMessage();
message.To.Add("my email");
message.Subject = "subject";
message.From = new MailAddress("any email");
message.Body = "body";

message.Attachments.Add(new System.Net.Mail.Attachment(path));
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("my user", "my pass");

smtp.Send(message);

当我收到电子邮件时,FROM 字段中会填入my user。我使用UseDefaultCredentials 作为false。当我查看结果时,FROM 字段填充有my userFROM字段不应该填写any email吗?如何使用any email 作为发件人发送电子邮件?

【问题讨论】:

  • 我认为这是 GMail 控制其 SMTP 服务使用的一种方式。如果有人可以通过 GMail 向其他人发送邮件,垃圾邮件发送者就会蜂拥而至。这样,所有“代表您”发送的电子邮件都来自您(=“我的用户”)
  • 我已经在一个 JAVA 程序中做到了这一点......很多年前! :(
  • 您是否有机会检查您收到的电子邮件的完整来源?它应该有“发件人:任何电子邮件”和“发件人:我的用户”。您正在查看电子邮件的应用程序可能会将发件人显示为发件人,并导致混淆。

标签: c# gmail smtpclient


【解决方案1】:

我使用同样的方式使用 GMail 作为服务发送电子邮件。我最初将 .From 属性设置为“noreply@mydomain.com”,但电子邮件仍然到达时将 From 标头设置为用于身份验证的帐户。

面对这个问题,我使用了ReplyToList 属性 (.ReplyToList.Add(MailAddress))),以便回复邮件的收件人将回复发送到我们用来发送外发邮件的“自动”帐户之外的电子邮件帐户消息。

编辑:

有关详细信息,请参阅this thread on Google Groups。另外,a related answer on Stack Overflow

【讨论】:

    【解决方案2】:

    运行您的代码 sn-p 我得到:

    Return-Path: <my user>
    Received: from Psi ([80.92.234.64])
            by mx.google.com with ESMTPS id f1sm20531634wiy.2.2012.10.08.10.07.49
            (version=TLSv1/SSLv3 cipher=OTHER);
            Mon, 08 Oct 2012 10:07:49 -0700 (PDT)
    Message-ID: <50730865.2152b40a.13ea.28ec@mx.google.com>
    Sender: Roman R. <my user>
    MIME-Version: 1.0
    From: any email
    To: my email
    Date: Mon, 08 Oct 2012 10:07:49 -0700 (PDT)
    Subject: Subject
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: quoted-printable
    
    Body
    

    Sender 是用于通过 Google Mail 进行身份验证的电子邮件地址。 From 是代码中提供的“发件人”。接收应用程序可能会混淆两者,其余的看起来就像预期的一样。一些邮件客户端将 From+Sender(当它们不同时)显示为“由 Sender 代表 From 发送”。

    您可能会担心 Google Mail 仍会通过 Sender 字段显示发送电子邮件的帐户,但这就是它的工作原理。您确实从该帐户发送。

    另外,另一个可能的原因是From 邮件地址本身。如果您将其添加到您的 Google Mail 帐户作为您自己的地址之一(并通过带有链接的测试电子邮件确认),那么 Google Mail 将允许将其放入 From 字段。否则它可能会丢弃它并用Sender 替换它。

    【讨论】:

    • 我是gmail 设置有一个设置可以更改FROM 字段。这是一个更好的解决方案,它使更专业。接收来自support@my.company.com 的电子邮件比接收来自support.my.company@gmail.com 的电子邮件更好
    • 这是我在上一段中的观点。如果您在 GMail 中添加了您的电子邮件地址作为您自己的备用地址,您也可以将其放在 C# 代码中的 From 字段中。否则它可能会被丢弃,并且在 GMail 上您无法将任何内容放入“发件人”,您也只能从已确认地址列表中进行选择。从我在答案中引用的电子邮件中可以看出,GMail 正确地从那里放置,因为“任何邮件”是我的备用地址之一。
    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2016-01-16
    • 2011-08-11
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2012-12-11
    • 2020-02-21
    相关资源
    最近更新 更多