2016-12-30 35 views
0

私のアプリでは電子メールを送信したいが、それはデバッグモードでうまく動作するが、リリースするとこのエラーが出る。私はすでに例外をキャッチしていますが、それは電子メールを送信しないため、実際にはこの機能が必要です。これはどのようにして発生し、どのように展開できたら解決できるのでしょうか?私は複数の携帯電話でそれをテストしました、そして、彼らはすべて、この例外を出しましたので、使用された電話は問題ではありません。コード対応C#XamarinでSystem.Net.Sockets.SocketExceptionを解決するには?

:「名前」と「メール」で

this.Dismiss(); 
var message = new MimeMessage(); 
message.From.Add(new MailboxAddress("Name", "Email")); 
message.To.Add(new MailboxAddress("Name", "Email")); 
message.Subject = "Test" 

message.Body = new TextPart("plain") 
{ 
    Text = @"Test" 
}; 

using (var client = new MailKit.Net.Smtp.SmtpClient()) 
{ 
    try 
    { 
     client.ServerCertificateValidationCallback = (s, c, h, e) => true; 
     client.Connect("smtp.gmail.com", 25, false); 

     // Note: since we don't have an OAuth2 token, disable 
     // the XOAUTH2 authentication mechanism. 

     client.AuthenticationMechanisms.Remove("XOAUTH2"); 
     client.Authenticate("Account", "Password"); 

     client.Send(message); 
     client.Disconnect(true); 

     Toast.MakeText(this.Activity, "Thanks for the email", Android.Widget.ToastLength.Short).Show(); 
    } 
    catch (System.Net.Sockets.SocketException e) 
    { 
     Toast.MakeText(this.Activity, "Connection error, please try again later!", Android.Widget.ToastLength.Short).Show(); 
    } 

は、対応する情報であるが、この例のためにそれを変更しました。セキュリティのためにclient.Authenticateの "Account"および "Password"と同じです。

EDIT:エラーコードは11001で、メッセージはホスト「smtp.gmail.com」を解決できませんでした。これは他のポートでも発生します。私が奇妙なことは、私のエミュレータでデバッグするときに動作するが、展開時には携帯電話では動作しないということだ。

+1

SSLを使用してください(ポート587)。Googleで問題が発生していると思われます。 – john

+0

あなたがアプリのFROMを使用しているアドレスは重要ですか?あなたの開発者はip Aで、リリースはip Bですか?それからgoogleからの指示を見てください。私はあなたがより強力なパスワードを必要と信じています。 – user1515791

+0

例外には 'Message'プロパティがあり、' SocketException'には 'ErrorCode'プロパティがあります。質問にそれらを含めることはできますか? –

答えて

1

ダムの間違い、私はアクセスインターネットへのアクセス許可を追加するのを忘れました。

デバッグモードで動作しますが、これはちょっと変わっています。

+0

いいキャッチ、Ewan! :) –

関連する問題