2017-05-27 20 views
0

私はGmailを介してメールを送信するwinformsアプリを持っています。 素晴らしいですが、1つのケースでは送信が失敗し、上記のエラーが発生します。 RDP接続経由でアクセスしているコンピュータでアプリケーションが実行されている場合に発生します。 私は成功せず、これまでに試してみました:gmailでメールを送信する#10051ネットワークにアクセスできない

  1. 無効にWindowsファイアウォール
  2. 無効にマイクロソフトセキュリティEssensials。
  3. 他のアンチウイルスプログラムがインストールされていないことを確認してください。
  4. アウトバウンドルルに587ポートを追加しました。

私のコードは次のよう:(このコードはすべてのケースで働いていることに注意してくださいが、この)

string fromAddress = txtFrom.Text.Trim(); 
       string toAddress = txtTo.Text.Trim(); 
       string fromPassword = ePassword; 
       string subject = txtSubject.Text; 
       string body = txtMessage.Text; 

       var smtp = new SmtpClient 
       { 
        Host = "smtp.gmail.com", 
        Port = 587, 
        EnableSsl = true, 
        DeliveryMethod = SmtpDeliveryMethod.Network, 
        UseDefaultCredentials = false, 
        //Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
        Credentials = new NetworkCredential(fromAddress, fromPassword) 
       }; 
       //using (var message = new MailMessage(fromAddress, toAddress) 
       using (var message = new MailMessage() 
       { 
        From = new MailAddress(fromAddress, eDisplayName), 
        Subject = subject, 
        Body = body 
       }) 
       { 
        // Check for recipiens 
        if (txtTo.Text.Trim() != "") 
        { 
         foreach (string email in txtTo.Text.Split(';')) 
         { 
          message.To.Add(email.Trim()); 
         } 
        } 
        // check for copies 
        if (txtCopy.Text.Trim() != "") 
        { 
         foreach (string email in txtCopy.Text.Split(';')) 
         { 
          message.CC.Add(email.Trim()); 
         } 
        } 
        // check for blind copy 
        if (txtBlindCopy.Text.Trim() != "") 
        { 
         foreach (string email in txtBlindCopy.Text.Split(';')) 
         { 
          message.Bcc.Add(email.Trim()); 
         } 
        } 
        //check for attachments 
        for (int i = 0; i < clbAttachments.Items.Count; i++) 
        { 
         if (clbAttachments.GetItemChecked(i) == true) 
         { 
          Attachment attachment = new Attachment(clbAttachments.Items[i].ToString()); 
          message.Attachments.Add(attachment); 
         } 
        } 

        smtp.Send(message); 
        return true; 
+1

RDPにはどのようなタイプのネットワークがありますか?リモートコンピュータがOutlookが使用されているネットワークの内部にある場合は、動作させることはできません。おそらく、電子メールをブロックしているプロキシサーバーがあります。プロキシサーバーはポート587を含むすべての電子メールポート番号を自動的に取得します。したがって、電子メールを送信できるようにプロキシサーバーを設定する必要があります。プロキシサーバーは電子メールを自動的にOutlook Serverに転送します。 – jdweng

+0

プロキシサーバーの設定を確認するにはどうすればよいですか? リモートコンピュータがローカルネットワーク内にありません。 サードパーティからリモートサーバーを購入しました。 – subirshan

+0

コントロールパネルの最初のチェック:ユーザーアカウント:電子メール。ファイアウォールはおそらくポートフォリオの電子メールポートに設定されています。だからこの記事を参照してください:https://www.pcsteps.com/1154-port-forwarding-router-windows-firewall/ – jdweng

答えて

0

は答えを見つけました。私は私のコードで25にポートを変更し、メッセージが送信されました!私はすべての変更をOSにロールバックし、ポートの変更が唯一必要なことを確認するためにダブルチェックしました。誰かがこれを見つけることを願っています。

編集: ポート25は非セキュアポートです。私の場合、私はそれが私の問題を解決するように気にしなかった。

関連する問題