簡體   English   中英

如何使用C#將asp.net中的電子郵件發送到使用gmail地址的任何電子郵件地址

[英]How to send email in asp.net using c# to any email address using gmail address

我正在嘗試使用c#通過asp.net中的應用程序發送電子郵件。 我進行了很多搜索,大多數情況下在asp.net中找到以下代碼使用c#發送電子郵件:

        MailMessage objEmail = new MailMessage();

        objEmail.From = new MailAddress(txtFrom.Text);
        objEmail.To.Add(txtTo.Text);
        objEmail.CC.Add(txtCC.Text);
        objEmail.Bcc.Add(txtBCC.Text);
        objEmail.Subject = txtSubject.Text;

        try
        {

            SmtpClient mail = new SmtpClient();

            mail.EnableSsl = true;
            mail.DeliveryMethod = SmtpDeliveryMethod.Network;
            mail.Credentials = new NetworkCredential(txtFrom.Text, txtPassword.Text);
            mail.Timeout = 20000;

            mail.UseDefaultCredentials = false;

            mail.Host = "smtp.gmail.com";
            mail.Port = 587;

            mail.Send(objEmail);

            Response.Write("Your Email has been sent sucessfully - Thank You");

        }
        catch (Exception exc)
        {
            Response.Write("Send failure due to : <br />" + exc.ToString());
        }

但是我經常收到以下錯誤:

“” System.Net.Mail.SmtpException:發送郵件失敗。---> System.IO.IOException:無法從傳輸連接中讀取數據:現有連接被遠程主機強行關閉。---> System.Net .Sockets.SocketException:System.Net.Sockets.NetworkStream.Read上的遠程主機強制關閉了現有連接。 (字節[]緩沖區,Int32偏移量,整數32大小)---內部異常堆棧跟蹤的結尾---在System.Net.Sockets.NetworkStream.Read(字節[]緩沖區,Int32偏移量,整數32大小)在System.Net .DelegatedStream.Read(Byte。]緩沖區,在System.Net.BufferedReadStream.Read(Byte []緩沖區,Int32偏移,Int32計數)在System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader調用者, System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader調用者)的System.Net.Mail.CheckCommand.Send(SmtpConnection conn,String& System.Net.Mail.StartTlsCommand.Send(SmtpConnection conn)在System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)在System.Net.Mail。 System.Net.Mail.SmtpClient.Send(MailMessage消息)處的.SmtpClient.GetConnection()”

您正在嘗試將Gmail的SMTP服務器用於不屬於Gmail的電子郵件地址(根據帖子的標題)。 您需要更新主機和端口的詳細信息,以適合電子郵件提供商的SMTP詳細信息。

您的代碼看起來合理,因此您需要找出導致其無法正常工作的原因。

您能否消除防火牆問題的可能性? 大多數中型或大型組織都傾向於阻塞端口25、465和587-他們只是不希望任何未經授權的郵件發送出去。 如果您懷疑可能是這種情況,則可以嘗試從網絡外部(例如,您的家用計算機)進行嘗試,盡管某些ISP也會阻塞端口。

如果防火牆沒有阻止您的連接,請驗證您的憑據是否有效-可以通過Thunderbird,Outlook或類似的方式發送。 嘗試使用未加密的郵件設置測試-遍歷您的垃圾郵件文件夾,將其中一些粘貼到spamcop或等效郵件中,然后尋找開放中繼。 或者,有些商業電子郵件提供商支持未加密的電子郵件。

您可以檢查出來..簡單的代碼及其適用於gmail帳戶的功能...

    try
    {

        MailMessage msg = new MailMessage();
        msg.From = new MailAddress(TextFRM.Text);
        msg.To.Add(TextTO.Text);
        msg.Subject = TextSUB.Text;
        msg.Body = TextMSG.Text;


        SmtpClient sc = new SmtpClient("smtp.gmail.com");
        sc.Port = 25;
        sc.Credentials = new NetworkCredential(TextFRM.Text, TextPSD.Text);
        sc.EnableSsl = true;
        sc.Send(msg);
        Response.Write("Mail Send");
    }

    catch (Exception ex)
    {

        Response.Write(ex.Message);

    }

暫無
暫無

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

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