【问题标题】:How to use gmail SMTP in ASP.NET form如何在 ASP.NET 表单中使用 gmail SMTP
【发布时间】:2011-12-20 10:25:39
【问题描述】:

我是 ASP 新手,正在对工作表单进行故障排除。我们这里没有人是 ASP 专家,因为我们使用 PHP。但我的 PHP 经验也很差,主要是单独使用 HTML/CSS。我当前的表单凭据如下所示:

rotected Sub SubmitForm_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not Page.IsValid Then Exit Sub

        Dim SendResultsTo As String = "email to"
        Dim smtpMailServer As String = "email server"
        Dim smtpUsername As String = "email username"
        Dim smtpPassword As String = "password"
        Dim MailSubject As String = "Form Results"

如何将此表单发送到 Gmail 地址?我知道我必须在某处包含端口(587),但无法弄清楚在哪里,因为这种形式与我见过的任何其他形式的语法都不匹配。任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net forms syntax smtp gmail


    【解决方案1】:

    创建一个 System.Net.Mail.SmtpClient 对象,设置你正在使用的 SMTP 服务器信息。

    然后用消息数据创建一个 System.Smtl.MailMessage 并发送它:

    using (System.Net.Mail.SmtpClient mail = new System.Net.Mail.SmtpClient()) {
        using (System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage("from*where.com", "to@where.com") {
            IsBodyHtml = true,
            Subject = "Subject text",
            Body = messageBody,
        }) {
            mail.Send(message);
    } // using
    

    你可以在构造函数中配置你的 SmtpClient,我们使用 web.comfig,所以我没有那个代码。

    【讨论】:

    • 我不知道该怎么做,哈哈哈。我什至不应该在这个项目上工作,但不幸的是,我是唯一一个可以这样做的人。
    • 上述答案中的web.config设置了SmtpClient对象,所以你可以使用我的代码原封不动地发送消息。
    • 这是我的完整语法pastebin.com/85Ad9swq 抱歉,但我什至不知道从哪里开始。我没有可行的理由学习 ASP.NET...除了这个实例-_-
    【解决方案2】:

    您可以将其添加到您的 web.config 文件中

     <system.net>
        <mailSettings>
          <smtp from="yourMailId@gmail.com ">
            <network host="smtp.gmail.com" defaultCredentials="false"
          port="587" userName ="yourmail@gmail.com" password="yourpassword" />
          </smtp>
        </mailSettings>
       </system.net>
    

    【讨论】:

    • 我会从现有代码中删除整个部分吗? Dim SendResultsTo As String = "email to" Dim smtpMailServer As String = "email server" Dim smtpUsername As String = "email username" Dim smtpPassword As String = "password" Dim MailSubject As String = "Form Results"
    • 您将不需要在代码中再次指定用户名密码和网络,在您的代码中创建一个 SmtpClient 对象来发送消息
    【解决方案3】:

    no shortage of tutorials 介绍了如何从 .NET 中发送电子邮件。

    本质上,您希望System.Net.Mail.SmtpClient 对象与 SMTP 服务器交互,System.Net.Mail.MailMessage 对象用于保存消息数据,以及配置文件中的配置数据,以指导客户端如何/在何处发送消息。

    【讨论】:

      【解决方案4】:

      试试这个。

      Dim client As New Net.Mail.SmtpClient
      client.UseDefaultCredentials = False
      client.Credentials = New System.Net.NetworkCredential("sender@gmail.com", "password")
      client.Host = "smtp.gmail.com"
      client.Port = 587
      client.EnableSsl = True
      client.Send("sender@gmail.com","reciever@gmail.com","subject","body")
      

      【讨论】:

      • 我收到运行时错误。如果不是 Page.IsValid 然后退出 Sub Dim client As New Net.Mail.SmtpClient client.UseDefaultCredentials = False client.Credentials = Net System.Net.NetworkCredential("ajtroxell67@gmail.com", "pajax6767") client.Host = " smtp.gmail.com" client.Port = 587 client.EnableSsl = True client.Send("sender@gmail.com","ajtroxell67@gmail.com","subject","body") 试试 Dim txtQ As TextBox = Me.FormContent.FindControl("TextBoxQ")`
      • 请删除这个。你的密码被泄露了!
      【解决方案5】:
      protected void SendMail()
              {
                  MailMessage msg = new MailMessage();
                  System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
                  try
                  {
                      msg.Subject = "Add Subject";
                      msg.Body = "Add Email Body Part";
                      msg.From = new MailAddress("Valid Email Address");
                      msg.To.Add("Valid Email Address");
                      msg.IsBodyHtml = true;
                      client.Host = "smtp.gmail.com";
                      System.Net.NetworkCredential basicauthenticationinfo = new System.Net.NetworkCredential("Valid Email Address", "Password");
                      client.Port = int.Parse("587");
                      client.EnableSsl = true;
                      client.UseDefaultCredentials = false;
                      client.Credentials = basicauthenticationinfo;
                      client.DeliveryMethod = SmtpDeliveryMethod.Network;
                      client.Send(msg);
                  }
                  catch (Exception ex)
                  {
                      log.Error(ex.Message);
                  }
              }
      

      【讨论】:

      • Gmail/Google 将阻止它发送电子邮件。您可以更改发件人 gmail 帐户的设置,以允许“不太安全的应用”访问它。
      【解决方案6】:

      如果您使用两步验证,请不要忘记生成应用程序专用密码并使用该密码,而不是您用于登录 Gmail 的密码。

      (抱歉,我无法将其添加为评论。发布时没有足够的代表。)

      【讨论】:

        【解决方案7】:

        Google 现在会阻止从应用程序(甚至通过 SSL)登录以发送电子邮件。你有两个选择:

        1. 为您正在使用的帐户启用安全性较低的应用程序;或
        2. 从 Google 生成应用密码(推荐)

        对于选项 2,您必须先启用 2 因素身份验证,然后才能生成应用密码。 以下是我为在我的 ASP.NET Web 应用程序上运行而采取的步骤

        How to configure an ASP.NET web app with Gmail SMTP

        【讨论】:

          猜你喜欢
          • 2011-05-05
          • 2013-12-01
          • 2019-01-20
          • 2015-12-31
          • 2022-06-17
          • 2022-06-13
          • 2014-01-19
          • 2015-08-19
          • 2021-04-16
          相关资源
          最近更新 更多