如何在ASP.NET表单中使用Gmail SMTP

7

我是一名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),但无法找出应该放在哪里,因为这个表单与我见过的其他表单的语法不同。非常感谢您的帮助!

7个回答

16

您可以在您的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 =“电子邮件收件人” Dim smtpMailServer As String =“电子邮件服务器” Dim smtpUsername As String =“电子邮件用户名” Dim smtpPassword As String =“密码” Dim MailSubject As String =“表单结果”` - Aj Troxell
在您的代码中创建一个SmtpClient对象来发送消息,无需再次在代码中指定用户名、密码和网络。 - huMpty duMpty

15
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 帐户更改设置,允许“较不安全的应用程序”访问它。 - Shiljo Paulson

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.config,所以我没有那段代码。


我真的不知道该怎么做,哈哈。我甚至不应该参与这个项目,但不幸的是我是唯一可用的人。 - Aj Troxell
上面答案中的web.config设置了SmtpClient对象,因此您可以使用我的代码发送消息而不需要更改。 - drdwilcox
这是我的完整语法 http://pastebin.com/85Ad9swq非常抱歉,但我甚至不知道从哪里开始。除了这一个特定情况外,我没有学习ASP.NET的合适理由 -_- - Aj Troxell

1
谷歌现在会阻止应用程序(即使通过SSL)发送电子邮件的登录。您有两个选择:
  1. 为您正在使用的帐户启用不安全的应用程序;或者
  2. 从谷歌生成应用程序密码(推荐)
对于选项2,您必须先启用双重身份验证才能生成应用程序密码。以下是我在ASP.NET Web应用程序上使其工作的步骤。

如何配置使用Gmail SMTP的ASP.NET Web应用程序


0

试试这个。

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")

我遇到了运行时错误。如果页面无效,则退出子程序 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") - Aj Troxell
1
请删除此内容。您的密码已经被泄露! - naveen

0
如果您正在使用两步验证,请不要忘记生成一个应用程序专用密码并使用它,而不是您用于登录Gmail的密码。
(抱歉我不能将此添加为评论。在发布此帖时没有足够的声望。)

-1

关于如何在.NET中发送电子邮件,有大量的教程可供参考。

基本上,您需要一个System.Net.Mail.SmtpClient对象与SMTP服务器进行交互,一个System.Net.Mail.MailMessage对象来保存消息数据,并在配置文件中提供配置数据以指示客户端如何/在哪里发送消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接