簡體   English   中英

ASP.NET表單不發送電子郵件

[英]ASP.NET Form not sending email

我正在嘗試使表單向自己發送電子郵件,但由於某種原因,它無法正常工作,我不知道為什么。

當我提交表單時,它顯示以下內容的堆棧跟蹤:

在C:\\ Users \\ PC \\ Desktop \\ Projects \\ emailform \\ emailform \\ index.aspx.cs:line中的emailform.index.send_Click(Object sender,EventArgs e)的System.Net.Mail.SmtpClient.Send(MailMessage消息)處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;
            }
        }
    }
}

看來您的SmtpClient設置有麻煩。

您使用端口25和SSL。

但是默認情況下,端口25不使用SSL加密。 請查看下一個鏈接以獲取詳細信息。

嘗試像這樣更改代碼:

client.EnableSsl = false;

我嘗試過您的代碼,您的代碼沒有錯。

我認為您輸入的網絡憑據錯誤。

只是改變這個

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

對此

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

它會工作。

圖書館也會檢查它是否也是真實的電子郵件,並提交可能的真實電子郵件。

發生問題是因為您使用的端口號錯誤或憑據設置錯誤:

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#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM