ASP.NET Форма не отправляет электронную почту - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь заставить форму отправить электронное письмо самому себе, но по какой-то причине оно не работает, и я не могу понять, почему.

Когда я отправляю форму, она отображает трассировку стекаиз:

в System.Net.Mail.SmtpClient.Send (сообщение MailMessage) в emailform.index.send_Click (отправитель объекта, EventArgs e) в C: \ Users \ PC \ Desktop \ Projects \emailform \ emailform \ index.aspx.cs: строка 28

У кого-нибудь есть идеи?

Я только начал изучать C # и ASP.NET , так чтоможет быть что-то очевидное.

Вот код:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="emailform.index" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <br /> <br />
        <table align="center" width="60%">
            <tr>
                <td>to:</td>
                <td><asp:TextBox ID="to" runat="server" Text="email@gmail.com" width="60%" ></asp:TextBox></td>
            </tr>

            <tr>
                <td>from:</td>
                <td><asp:TextBox ID="from" runat="server" Text="myemail@outlook.com" Width="60%"></asp:TextBox></td>
            </tr>

            <tr>
                <td>subject</td>
                <td><asp:TextBox ID="subject" runat="server" Text="TEST" Width="60%"></asp:TextBox></td>
            </tr>

            <tr>
                <td>body</td>
                <td><asp:TextBox ID="body" runat="server" Text="this is a test message" Height="30%" Width="60%" TextMode="MultiLine"></asp:TextBox></td>
            </tr>

            <tr>
                <td></td>
                <td><asp:Button ID="send" onClick="send_Click" runat="server" Text="send" /></td>
            </tr>

            <tr>
                <td></td>
                <td><asp:Label ID="status" runat="server"></asp:Label></td>
            </tr>
        </table>
    </form>
</body>
</html>

Вот код C:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;

namespace emailform
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void send_Click(object sender, EventArgs e)
        {
            try
            {
                MailMessage message = new MailMessage(to.Text, from.Text, subject.Text, body.Text);
                message.IsBodyHtml = true;

                SmtpClient client = new SmtpClient("smtp.live.com", 25);
                client.EnableSsl = true;
                client.Credentials = new System.Net.NetworkCredential("myemail@outlook.com", "mypassword");
                client.Send(message);
                status.Text = "Message sent successfully!";
            }
            catch(Exception ex)
            {
                status.Text = ex.StackTrace;
            }
        }
    }
}

Ответы [ 5 ]

0 голосов
/ 13 сентября 2018

Проблема возникает из-за того, что вы используете неверный номер порта или неверные настройки учетных данных:

SmtpClient client = new SmtpClient("smtp.live.com", 25);

Попробуйте изменить имя сервера и номер порта для SSL / TLS, чтобы он выглядел следующим образом:

SmtpClient client = new SmtpClient("smtp.live.com", 587);

// alternative
SmtpClient client = new SmtpClient("smtp-mail.outlook.com", 587);

Кроме того, поскольку вы используете пользовательские учетные данные, необходимо отключить параметр учетных данных по умолчанию, прежде чем добавлять свои собственные:

client.UseDefaultCredentials = false;

Наконец, полный код SmtpClient для отправки электронной почты.почта должна быть похожа на приведенный ниже пример:

SmtpClient client = new SmtpClient("smtp-mail.outlook.com", 587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("myemail@outlook.com", "mypassword");
client.Send(message);

Ссылки:

Отправка электронной почты на C #

Отправка почты на учетную запись outlook ASP.Net C #

0 голосов
/ 12 сентября 2018

Я опробовал ваш код, и в вашем коде нет ничего плохого.

Я думаю, что вы вводите неверные учетные данные сети.

0 голосов
/ 12 сентября 2018

Просто измените это

MailMessage message = new MailMessage(to.Text, from.Text, subject.Text, body.Text);

К этому

MailMessage message = new MailMessage(from.Text, to.Text, subject.Text, body.Text);

Это будет работать.

0 голосов
/ 12 сентября 2018

Библиотека проверяет, является ли это реальным электронным письмом, отправьте реальное возможное электронное письмо.

0 голосов
/ 12 сентября 2018

Кажется, у вас проблемы с настройкой SmtpClient.

Вы используете порт 25 и SSL.

Но по умолчанию порт 25 не использует шифрование SSL. Пожалуйста, просмотрите следующую ссылку для деталей.

Попробуйте изменить свой код так:

client.EnableSsl = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...