【问题标题】:C# CONTACT FORMC# 联系表
【发布时间】:2016-06-22 19:10:57
【问题描述】:

我正在尝试在我的站点中构建一个联系表单,客户可以在其中为我发送电子邮件 (ADM)。 所以我正在使用 stmp 客户端来执行此操作,但是当我从联系表单发送电子邮件时,看起来好像是我发送给自己的。 这是代码。

MailMessage mailMessage = new MailMessage();
        MailAddress fromAddress = new MailAddress(command.Email); //sender email address 
        mailMessage.From = fromAddress;
        mailMessage.To.Add("myEmail@gmail.com");    //receiver email address               
        mailMessage.Body = command.Message;
        mailMessage.IsBodyHtml = true;
        mailMessage.Subject = "Contact Us";

        SmtpClient smtpClient = new SmtpClient();
        smtpClient.Host = "smtp.gmail.com";
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtpClient.Credentials = new System.Net.NetworkCredential("myEmail@gmail.com", "password");
        smtpClient.Send(mailMessage);

我怎样才能设置正确的电子邮件,这样我才能收到来自客户而不是我自己的邮件哈哈。?

【问题讨论】:

  • 您很可能无法发送来自其他收件人的电子邮件。虽然从技术上讲,您可以将 FROM 或 REPLY-TO 标头设置为您想要的任何值,但您的 SMTP 提供商 (Gmail) 可能会将其视为欺骗性尝试,并可能会更改您设置的 FROM 标头。这只是推测,但它可以解释你所看到的。
  • 我明白了...那么,我怎么知道谁给我发了一封电子邮件?
  • 将发件人的电子邮件地址放在正文或主题中
  • 对!没想到!!谢谢大家

标签: c# .net gmail


【解决方案1】:

Google smtp 服务器会自动更改 From 字段以匹配用于登录的凭据。如果 smtp 服务器允许任何人从任何地址发送邮件,它可能不会被其他邮件服务器信任,并且邮件将被忽略或标记为垃圾邮件。

【讨论】:

  • 嗯,Sooo,我怎么知道谁在发送电子邮件? oO
【解决方案2】:

除了@tsandy 的答案之外,我还看到您需要更改一些内容。所以我猜 command.Email 是客户的电子邮件地址。您的代码可能如下所示。

MailMessage mailMessage = new MailMessage();
MailAddress fromAddress = new MailAddress("myEmail@gmail.com"); //sender email address 
mailMessage.From = fromAddress;
mailMessage.To.Add("myEmail@gmail.com");    //receiver email address               
mailMessage.Body = command.Message;
mailMessage.IsBodyHtml = true;
mailMessage.DisplayName = command.email; //This line is added
mailMessage.Subject = "Contact Us";

SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.Credentials = new System.Net.NetworkCredential("myEmail@gmail.com", "password");
smtpClient.Send(mailMessage);

在这种情况下,您就像给自己发送一封电子邮件,但在邮件签名中您至少会看到客户的电子邮件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2015-05-02
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多