【问题标题】:MailMessage ASP.NET Wrong from email?MailMessage ASP.NET 来自电子邮件的错误?
【发布时间】:2011-07-03 07:11:56
【问题描述】:

我有一个按钮事件,无论用户输入什么,它都会通过电子邮件发送给我。我收到消息很好....主题....消息。但是来自电子邮件的部分只是从我自己那里显示的(与它将要显示的相同)

如何从他们输入的任何电子邮件地址显示它?

我正在使用 gmail smtp 连接到我设置的 gmail 帐户。

MailMessage 有 4 个参数(发件人、收件人、主题、正文)

txtEmail.Text 确实正确地保存了他们的电子邮件地址。

protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    this.toEmail = "myemail@gmail.com";
    this.subject = txtSubject.Text;
    this.fromEmail = txtEmail.Text;
    this.comment = txtComment.Text;
    message = new MailMessage(fromEmail, toEmail, subject, comment);
    smtp.Send(message);
    message.Dispose();
}

我用类似的东西尝试了下面的建议......并且仍然从我自己身上显示出来。

message = new MailMessage(ReplyToList[0].toString(), toEmail, subject, comment);

我什至尝试过这样做,但仍然表现出我自己。我什至检查了代码以确保它保存了不同的电子邮件地址,而且确实如此。

protected void Wizard1_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{

    this.subject = txtSubject.Text;
    this.comment = txtComment.Text;

    to = new MailAddress("myemail@gmail.com");
    from = new MailAddress(txtEmail.Text);

    MailMessage message = new MailMessage(from, to);
    message.Subject = txtSubject.Text;
    message.Body = txtComment.Text;
    message.Headers.Add("Reply-To", txtEmail.Text);
    smtp.Send(message);
    message.Dispose();
}

在代码中我只是调用SmtpClient client = new SmtpClient();

然后在我的 web.config 我有

  <mailSettings>
    <smtp from="bob">
      <network host="smtp.gmail.com" port="587" userName="myemail" password="mypassword" enableSsl="true"/>
    </smtp>
  </mailSettings>

有什么帮助吗?

【问题讨论】:

  • 我知道一些邮件服务器会重写 From/From: 基于身份验证用户(我假设您正在执行 smtp 身份验证)作为安全功能。根据您的意图,仅使用回复标头可能更简单/更容易 - 请参阅msdn.microsoft.com/en-us/library/… - 或者,如果您想验证重写是否正在发生,请运行您自己的邮件服务器进行测试(为此我喜欢 hMailServer - hmailserver.com)
  • 好的,我尝试了以下类似的方法,但仍然无法正常工作。 message = new MailMessage(ReplyToList[0].toString(), toEmail, 主题, 评论);
  • 您的 smtp 是如何设置的?您连接到哪个 STMP 服务器?您是否正在验证 gmail 服务器?如果是这样,它可能会阻止您更改“发件人”地址以防止垃圾邮件等......当我使用我的 NetworkCredentials 对我的公司 Exchange 服务器进行身份验证时,我从未遇到过这种情况。
  • 我尝试了以下但仍然无法正常工作。我添加了我的 web.config。还有其他建议吗?

标签: c# asp.net visual-studio smtpclient mailmessage


【解决方案1】:

正如 James Manning 所建议的,一种简单的方法是在发送之前在电子邮件上设置一个回复标题,如下所示:

this.ReplyToList.Add(txtEmail.Text);

【讨论】:

    【解决方案2】:

    尝试像这样创建您的 SmtpClient(您没有包含它,所以这可能不是您的问题)。

        var client
                = new SmtpClient(SmtpHostname)
                  {
                      DeliveryMethod = SmtpDeliveryMethod.Network,
                      Credentials = CredentialCache.DefaultNetworkCredentials
                  };
    

    【讨论】:

    • 我试过了,还是同样的问题。在代码中我只是调用 SmtpClient client = new SmtpClient();然后在我的 web.config 中,我有
    【解决方案3】:

    这一直对我有用,虽然没有通过 gmail smtp 服务器验证:

    MailMessage message = new MailMessage(from, to);
    message.ReplyToList.Add(new MailAddress(from));
    message.Subject = txtSubject.Text;
    

    【讨论】:

      猜你喜欢
      • 2015-07-09
      • 1970-01-01
      • 2016-04-09
      • 2011-09-30
      • 2019-09-17
      • 2010-11-04
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多