【问题标题】:MVC3 e-mail to own addressMVC3 电子邮件到自己的地址
【发布时间】:2013-03-18 20:38:15
【问题描述】:

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

是否可以给自己发送邮件(我不知道提问者的 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 部分时发生变化。但是当我去我的邮件时,我得到了这个:

【问题讨论】:

  • 并非所有电子邮件服务器都不允许您发送任何人的电子邮件。它与安全有关。 en.wikipedia.org/wiki/Open_mail_relay 除非您在 gmail 中验证 test@mail.be 归您所有,否则 gmail 不会让您使用它作为发件人地址发送电子邮件。
  • 当我使用有效的邮件地址(如雅虎地址)时,我也会得到它
  • 您可以使用此作为发件人地址通过您的 Gmail(非代码)发送电子邮件吗?您是否将其作为有效的发件人地址添加到您的 Gmail 中?阅读:support.google.com/mail/answer/22370?hl=en
  • 问题是,我不想发电子邮件,其他人必须给我发消息(当他们提出问题时,我必须获得一封带有提出问题和其他内容的人的地址,或者我必须得到某人已发布消息的通知,例如通过 noreply@mail.com)
  • 这实际上是一个测试,邮件地址必须更改为其他内容,并且取决于某人选择的人。

标签: asp.net-mvc-3 system.net.mail


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,并且在没有 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 帐户上点击 Settings => Accounts =>Send mail as 添加您的域电子邮件地址,系统会要求您填写确认码只需关闭它返回您的gemail,您将获得一个链接点击它完成它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2015-01-20
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      相关资源
      最近更新 更多