0

在有人发布问题后,我正在尝试向自己发送电子邮件。虽然我收到了一封电子邮件,但这不是我需要的:发件人邮件地址是我自己的,而不是提出问题的人。

是否可以向自己发送邮件(我不知道提问者的 smtp 主机、用户名或密码)。

如果您需要,我会添加一些代码。

QuestionsController.cs

MailMessage msg = new MailMessage();
msg.From = new MailAddress(question.Author + "<" + question.MailAuthor + ">");
msg.To.Add("myGmailAddress");
msg.Subject = question.Title;
msg.Body = question.Message;
msg.Sender = new MailAddress(question.MailAuthor);
SmtpClient client = new SmtpClient();
client.Send(msg);

我的代码首先不包含 msg.sender,但我通过添加发件人进行了尝试,但这也没有帮助。

Web.config(在视图文件夹之外)

<system.net>
    <mailSettings>
      <smtp from="myGmailAddress">
        <network 
          host="smtp.gmail.com" 
          password="myPassword" 
          userName="myGmailAddress" 
          port="587" 
          enableSsl="true" 
          defaultCredentials="false" />
      </smtp>
    </mailSettings>
</system.net>

还尝试了没有 from 部分和 defaultCredentials="false"。

当我调试代码时,我可以看到 msg 中的 from 以我的 gmail 地址开头,并在他通过 msg.From 部分时发生变化。但是当我去我的邮件时,我得到了这个: 在此处输入图像描述

4

2 回答 2

0

感谢 sylon 的评论,我决定创建一个 noreply 地址来通知人们新问题。

于 2013-04-10T08:50:49.353 回答
0

我遇到了同样的问题,并且没有使用 noreply 就可以解决它,我认为您的主机服务器没有像 Gmail 那样的问题,您可以尝试这样做:
1. 通过您的主机服务器发送电子邮件(我没有使用 Web.config ):

 [HttpPost]
 public ActionResult SendMail(Question question)
  {
    string retValue = "There was an error submitting the form, please try again later.";
    if (!ModelState.IsValid)
        {
           return Content(retValue);
        }

    if (ModelState.IsValid)
        {                    
           using (var client = new SmtpClient
           {                  

              host="mail.yourDomain.com" //mail.yourDomain.be,if your using belgium,
              Port = 587,
              EnableSsl = true,
              UseDefaultCredentials=false,
              Credentials = new NetworkCredential("yourDomainEmailAddress","PasswordOfDomainMail"), 
                        DeliveryMethod = SmtpDeliveryMethod.Network})
         {
              var mail = new MailMessage();

              mail.To.Add("yourDomainEmailAddress"); 
              mail.From = new MailAddress(question.MailAuthor, question.Author);
              mail.Subject = String.Format(question.Title);
              msg.Body = question.Message;                       
              mail.ReplyToList.Add(yourDomainEmailAddress);
            try 
                {           
                 client.Send(mail);
                     retValue = "Your Request for Contact was submitted successfully. We will contact you shortly.";
                }
                        catch (Exception)
                        {

                            throw;
                        }
                    }
                }
                return Content(retValue);
            }
  1. 在您的主机服务器上将您的域电子邮件地址转发到您的 Gmail 地址。
  2. 在您的 gmail 帐户上单击设置=>帐户=>发送邮件作为添加您的域电子邮件地址,您将被要求填写确认码,只需将其关闭返回到您的 gemail,您将获得一个链接,单击它即可完成。
于 2014-02-04T20:49:46.150 回答