MailMessage ASP.NET Неправильно от электронной почты? - PullRequest
1 голос
/ 24 февраля 2011

У меня есть событие для кнопки, которая просто отправляет мне электронное письмо независимо от того, что пользователь ввел. Я получаю сообщение хорошо .... тема .... сообщение. Но часть от электронной почты просто показывает от себя (так же, как та, на которую он собирается)

Как сделать так, чтобы оно показывалось с любого введенного им адреса электронной почты?

Я использую 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>

любая помощь?

Ответы [ 3 ]

2 голосов
/ 24 февраля 2011

Как сказал Джеймс Мэннинг, простой способ сделать это - установить заголовок ответа на электронное письмо перед отправкой следующим образом:

this.ReplyToList.Add(txtEmail.Text);
0 голосов
/ 05 апреля 2011

Это всегда работало для меня, хотя не проверено через SMTP-серверы Gmail:

MailMessage message = new MailMessage(from, to);
message.ReplyToList.Add(new MailAddress(from));
message.Subject = txtSubject.Text;
0 голосов
/ 24 февраля 2011

Попробуйте создать свой SmtpClient следующим образом (вы его не включили, так что это может не быть вашей проблемой).

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