2016-05-12 16 views
0

私は長い間、以下のコードを使用してGmailアカウントからGmailアカウントにメールを送信しようとしています。実行後gmail smtp serverを使用した電子メールの送信

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)は、」ブラウザが待っていると、2分後に、私は

「失敗は電子メールを送信する」と言って例外、次のエラーメッセージを取得すると言う達する

接続されたホストが一定時間後に正しく応答しなかったか、接続されたホストが応答しなかったために接続が失敗したために接続に失敗しました。:587" (一部のIP)

私は私がこの問題を解決してください。このために多くのことを検索しましたが、解決策を見つけていない

ありがとうの

答えて

0

まず。。。すべて、私はあなたが

UseDefaultCredentials = false;

そして

を使用すべきだと思います

smtp.DeliveryMethod = SmtpDeliveryMethod.Network

またallow less secure apps to access your account

+0

安全性の低いアプリにアカウントへのアクセスを許可しました。 "DeliverMethod = SmtpDeliveryMethod.Network"を追加すると、DeliverMethodが宣言されていないというエラーが表示されます。 – user2211486

+0

私は自分の答えを編集しました - DeliveryMethodはSmtpClientプロパティです。 – Vegz

+0

smtp.DeliveryMethod = SmtpDeliveryMethod.Networkを追加しましたが、それと同じエラーです。 – user2211486

0

にこれを試してみてください必要があります。

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; 
} 
+0

Manish Vadherによって与えられた上記のコードを試しましたが、同じエラーと例外が発生します。 – user2211486

+0

OK Googleに設定するのはわかりますか?安全性の低いアプリを許可する:Google Gmailの設定をオンにする。 –

+0

はい。私は「安全性の低いアプリを許可する」をONにしました。またyahooとyahoo SMTPを使ってみましたが、同じエラーです。 – user2211486

0

私は同様の試みをしましたが、Javaを使用しました。私は多くの検索の後にそれを成功させていませんでした。私はその後Yahoo!非常に簡単に働いたSMTP。多分あなたはそれを試すことができます。

+0

Yahoo SMTPでも試してみました。しかし、同じエラーと例外。 – user2211486

+0

さて、[このリンクの上の]コード(http://www.codeproject.com/Tips/520998/Send-Email-from-Yahoo-GMail-Hotmail-Csharp)はYahoo! SMTP。メールは数分後に届きました。 GMailでもうまくいくと思う。 –

+0

私はYahoo smtpを使うのに全く同じコードを使いましたが、同じエラーと例外がありました。 – user2211486

関連する問題