Как использовать gmail SMTP в форме ASP.NET - PullRequest
5 голосов
/ 02 ноября 2011

Я новичок в 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 голосов
/ 02 ноября 2011

Вы можете добавить это в ваш 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>
12 голосов
/ 03 ноября 2011
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);
            }
        }
1 голос
/ 02 ноября 2011

Создайте объект 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, поэтому у меня нет этого кода.

0 голосов
/ 17 января 2018

Google теперь блокирует входы из приложения (даже через SSL) для отправки электронной почты. У вас есть два варианта:

  1. Включить менее безопасные приложения для учетной записи, которую вы используете; OR
  2. Сгенерируйте пароль приложения из Google (рекомендуется)

Для варианта 2 вам нужно будет включить двухфакторную аутентификацию, прежде чем вы сможете сгенерировать пароль приложения. Вот шаги, которые я предпринял, чтобы заставить это работать в моем веб-приложении ASP.NET

Как настроить веб-приложение ASP.NET с Gmail SMTP

0 голосов
/ 14 сентября 2013

Если вы используете двухэтапную проверку, не забудьте сгенерировать пароль для конкретного приложения и использовать его, а не пароль, который вы используете для входа в Gmail.

(Извините, я не могудобавьте это как комментарий. Недостаточно репутации на момент публикации.)

0 голосов
/ 02 ноября 2011

Попробуйте это.

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")
0 голосов
/ 02 ноября 2011

Нет нет недостатка в учебниках о том, как отправить электронное письмо из .NET.

По сути, вы хотите, чтобы объект System.Net.Mail.SmtpClient взаимодействовал с SMTP-сервером, System.Net.Mail.MailMessageобъект для хранения данных сообщения и данных конфигурации в вашем файле конфигурации, чтобы указать клиенту, как / куда отправить сообщение.

...