簡體   English   中英

使用Gmail SMTP服務器發送電子郵件

[英]Sending email using gmail smtp server

我一直在嘗試使用以下代碼將郵件從Gmail帳戶發送到gmail帳戶。

using (MailMessage mm = new MailMessage(txtEmail.Text, txtTo.Text))
{
    mm.Subject = txtSubject.Text;
    mm.Body = txtBody.Text;
    if (fuAttachment.HasFile)
    {
        string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
        mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
    }
    mm.IsBodyHtml = false;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.EnableSsl = true;
    NetworkCredential NetworkCred = new NetworkCredential(txtEmail.Text, txtPassword.Text);
    smtp.UseDefaultCredentials = true;
    smtp.Credentials = NetworkCred;
    smtp.Port = 587;
    smtp.Send(mm);
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}

執行達到“ smtp.Send(mm)”后,瀏覽器說等待,兩分鍾后我得到一個異常,說“發送電子郵件失敗”

和以下錯誤消息

連接嘗試失敗是因為一段時間后連接方未正確響應,或者連接建立因連接主機未響應而失敗 :587“(某些IP)

我為此進行了大量搜索,但沒有找到解決方案。 請幫我解決這個問題。

謝謝。

首先,我認為您應該使用

UseDefaultCredentials = false;

smtp.DeliveryMethod = SmtpDeliveryMethod.Network

您還需要允許安全性較低的應用訪問您的帳戶

試試這個。

public static string SendMail(string stHtmlBody, string stSubject, string stToEmailAddresses)
{
    string stReturnText = string.Empty;
    try
    {
        if (!string.IsNullOrEmpty(stToEmailAddresses))
        {
            //Set SmtpClient to send Email
            string stFromUserName = "fromusername";
            string stFromPassword ="frompassword";
            int inPort = Convert.ToInt32(587);
            string stHost = "smtp.gmail.com";
            bool btIsSSL =true;



            MailAddress to = new MailAddress(stToEmailAddresses);
            MailAddress from = new MailAddress("\"" + "Title" + "\" " + stFromUserName);

            MailMessage objEmail = new MailMessage(from, to);
            objEmail.Subject = stSubject;
            objEmail.Body = stHtmlBody.ToString();
            objEmail.IsBodyHtml = true;
            objEmail.Priority = MailPriority.High;


            SmtpClient client = new SmtpClient();
            System.Net.NetworkCredential auth = new System.Net.NetworkCredential(stFromUserName, stFromPassword);
            client.Host = stHost;
            client.Port = inPort;
            client.UseDefaultCredentials = false;
            client.Credentials = auth;
            client.EnableSsl = btIsSSL;
            client.Send(objEmail);

            return stReturnText;
        }
    }
    catch (Exception ex)
    {

    }

    return stReturnText;
}

我做了類似的嘗試,但是使用Java。 經過大量搜索,我這樣做並不成功。 然后,我使用了Yahoo! SMTP,非常容易使用。 也許您可以嘗試一下。

暫無
暫無

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

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